尽管-g标志,Valgrind仍未在GNU autotools项目中显示行号

时间:2013-10-29 20:35:46

标签: valgrind autotools libtool

我正在进行一个GNU Autotools项目,我遇到了一些奇怪的内存分配错误。我想使用Valgrind进行调试,但是当我在其下运行我的可执行文件时,我没有得到任何行号或源文件名。我甚至尝试使用以下命令进行配置,以便优化为-O0并使用-g标志进行调试:

./configure 'CXXFLAGS=-g -O0'

然后我将在Valgrind下运行可执行文件,如下所示:

valgrind -leak-check=full ./[exename]

我仍然只看到神秘的输出,如:

==3493==    24 bytes in 1 blocks are definitely lost in loss record 137 of 303
==3493==    at 0x4A06409: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==3493==    by 0x46904A: xmalloc (in /usr/bin/bash)

3 个答案:

答案 0 :(得分:1)

你真正想要的是:

libtool --mode=execute valgrind --leak-check=full exename ...

答案 1 :(得分:1)

补充ldav1s的答案,这就是我在 .bashrc 上的内容:

alias lgdb="libtool --mode=execute gdb"
alias lddd="libtool --mode=execute ddd"
alias lvalgrind="libtool --mode=execute valgrind"
alias lvalgrinddd="libtool --mode=execute valgrind --db-attach=yes --db-command=\"ddd %f %p\""

这样我就不必输入相当长的命令行。

答案 2 :(得分:0)

这可以通过在ldav1s和“{3}}手册”中描述的“执行”模式下使用libtool调用可执行文件来解决。感谢您的见解ldav1s!