我试过在我编写的应用程序上运行valgrind(memcheck和massif),但是我得到的所有地址都是执行函数的地址。Valgrind不会返回源代码行!
---------------------------------
Context accounted for 0.6% of measured spacetime
0x805F29A: (within prog_name)
0x8141740: (within prog_name)
Called from:
0.6% : 0x812E077: (within prog_name)
---------------------------------
Context accounted for 0.5% of measured spacetime
0x805F29A: (within prog_name)
0x81418FB: (within prog_name)
Called from:
0.5% : 0x812E077: (within prog_name)
我编译我的应用程序使用-g标志把调试符号英寸是否有其他原因的valgrind就不会显示的源代码行?
编辑:valgrind版本3.2.1-Debian; g ++ 4.3.1
不知道,但如果你'gdb prog_name'你的应用并尝试类似'break 0x812E077','gdb'显示行号? (你甚至不需要运行程序,只需要'gdb'加载它。) – aschepler 2010-10-25 21:48:22
@aschepler - 试过了。每当我尝试这样做时,gdb找不到名为“0x812E077”的函数,并询问它是否在库中,稍后会加载......所以这没有奏效。 – 2010-10-25 22:23:48
哎呀,那应该是'break * 0x812E077'。但很高兴你找到了解决办法。 – aschepler 2010-10-26 18:32:33