Valgrind的“噪音”是什么意思?

当我使用valgrind来帮助debugging一个应用程序时,我正在处理我注意到一个巨大的噪声似乎在抱怨标准库。 作为一个testing,我做了这个;

echo 'int main() {return 0;}' | gcc -xc -o test - 

然后我做了这个;

 valgrind ./test ==1096== Use of uninitialised value of size 8 ==1096== at 0x400A202: _dl_new_object (in /lib64/ld-2.10.1.so) ==1096== by 0x400607F: _dl_map_object_from_fd (in /lib64/ld-2.10.1.so) ==1096== by 0x4007A2C: _dl_map_object (in /lib64/ld-2.10.1.so) ==1096== by 0x400199A: map_doit (in /lib64/ld-2.10.1.so) ==1096== by 0x400D495: _dl_catch_error (in /lib64/ld-2.10.1.so) ==1096== by 0x400189E: do_preload (in /lib64/ld-2.10.1.so) ==1096== by 0x4003CCD: dl_main (in /lib64/ld-2.10.1.so) ==1096== by 0x401404B: _dl_sysdep_start (in /lib64/ld-2.10.1.so) ==1096== by 0x4001471: _dl_start (in /lib64/ld-2.10.1.so) ==1096== by 0x4000BA7: (within /lib64/ld-2.10.1.so) * large block of similar snipped * ==1096== Use of uninitialised value of size 8 ==1096== at 0x4F35FDD: (within /lib64/libc-2.10.1.so) ==1096== by 0x4F35B11: (within /lib64/libc-2.10.1.so) ==1096== by 0x4A1E61C: _vgnU_freeres (vg_preloaded.c:60) ==1096== by 0x4E5F2E4: __run_exit_handlers (in /lib64/libc-2.10.1.so) ==1096== by 0x4E5F354: exit (in /lib64/libc-2.10.1.so) ==1096== by 0x4E48A2C: (below main) (in /lib64/libc-2.10.1.so) ==1096== ==1096== ERROR SUMMARY: 3819 errors from 298 contexts (suppressed: 876 from 4) ==1096== malloc/free: in use at exit: 0 bytes in 0 blocks. ==1096== malloc/free: 0 allocs, 0 frees, 0 bytes allocated. ==1096== For counts of detected errors, rerun with: -v ==1096== Use --track-origins=yes to see where uninitialised values come from ==1096== All heap blocks were freed -- no leaks are possible. 

你可以在这里看到完整的结果: http : //pastebin.com/gcTN8xGp

我有两个问题 首先是有办法抑制所有的噪音?

–show-below-main在默认情况下被设置为no,但是没有显示出与主相当的显示。

你可以通过追加来抑制输出

 { ld error suppression Memcheck:Cond fun:dl_main fun:_dl_sysdep_start fun:_dl_start obj:/lib64/ld-2.10.1.so } 

/usr/lib/valgrind/default.supp (或者定义你自己的压缩文件)。

这似乎是一个已知的链接器/加载程序错误,至少Debian和Arch Linux开发人员; 我不确定其余的,以及他们的计划的行动。

升级到Valgrind 3.5.0或更高版本。 除其他外,默认的.supp文件已被更新。

我不时有这些症状,并且解决方案总是将我的valgrind和libc软件包升级到同步状态 。 Debian中的精灵小精灵负责其余部分。