首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >华润给出了错误的线路号码。

华润给出了错误的线路号码。
EN

Stack Overflow用户
提问于 2012-11-29 06:01:24
回答 2查看 1.5K关注 0票数 4

我目前正在运行x86。在进行了新的安装和更新之后,我按照“学习C艰难之路”教程中的说明安装了Valearch3.8.1。但是,我可以运行Valgrind,而不是在代码中给出错误的行号,它只会给出如下内容:

代码语言:javascript
复制
==9300==    by 0x4060714: (below main) (libc-start.c:227)

完整的价值报告在这里:http://pastebin.com/1spmkFrU

我确信我使用的是-g标志,使用--track-origins=yes只会告诉我错误函数是从哪里开始的,而不是函数中错误的位置。(这是使用--track:http://pastebin.com/ktvY8HEM的结果)

下面是我试图使用的makefile和代码:

Makefile:

代码语言:javascript
复制
CFLAGS=-Wall -g

EXECUTABLES=ex1 ex3 ex4

all: $(EXECUTABLES)

clean:
    rm -f $(EXECUTABLES)

代码:

代码语言:javascript
复制
#include <stdio.h>

/*This program is purposefully broken */

int main()
{
    int age = 10;
    int height;

    printf("I am %d years old.\n");
    printf("I am %d inches tall.\n", height);

return 0;
}
EN

回答 2

Stack Overflow用户

发布于 2012-11-29 06:23:21

main()的堆栈分配语义有点奇怪。尝试将错误的代码放入另一个函数中,从main()调用它,您可能会得到更有意义的结果。

更重要的是,尝试将-Wall-O添加到CFLAGS中。未使用的变量和printf()的误用都可以在编译时检测到。

票数 0
EN

Stack Overflow用户

发布于 2013-05-09 13:26:33

在练习8的同一篇教程中,这种情况发生在我身上。即使启用了跟踪功能,Val差伦也没有发现访问非法地址的线路。

看起来,对于程序来说不是致命的错误,但是包括访问非法地址的内存的错误,并不是瓦兰的“固定”错误。您可以在这里更多地了解这些信息:瓦莱尔文件摘录

我想瓦伦奇不会让你从你记忆中的错误地方中解脱出来,所以我们必须格外小心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13619782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档