首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Valgrind 'noise',这是什么意思?

Valgrind 'noise',这是什么意思?
EN

Stack Overflow用户
提问于 2010-05-19 19:03:01
回答 3查看 1.2K关注 0票数 11

当我使用valgrind帮助调试我正在开发的应用程序时,我注意到一片嘈杂声,似乎是在抱怨标准库。作为测试,我这样做了;

代码语言:javascript
复制
echo 'int main() {return 0;}' | gcc -x c -o test -

然后我做了这件事

代码语言:javascript
复制
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-after main默认设置为no,但似乎没有--show-after-main等效项。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-19 22:24:57

升级到Valgrind 3.5.0或更高版本。其中,默认的.supp文件已经更新。

票数 5
EN

Stack Overflow用户

发布于 2010-05-19 19:16:49

可以通过追加以下内容来取消输出

代码语言:javascript
复制
{
   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开发人员来说是这样;我不确定其余的,以及他们计划的行动方案。

票数 12
EN

Stack Overflow用户

发布于 2010-05-20 13:47:21

我有时会有这些症状,解决方案总是升级我的valgrind和libc包,使其与同步。Debian的小精灵们会照顾好剩下的事情。

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

https://stackoverflow.com/questions/2864882

复制
相关文章

相似问题

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