我可以让valgrind忽略glibc库吗?

Jac*_*ack 11 c linux valgrind glibc

是否有可能告诉valgrind忽略一些库?特别是glibc库..

实际问题:我有一些代码在正常执行中运行良好.没有泄漏等

当我尝试通过valgrind运行它时,我得到核心转储和程序重启/停止.

核心通常指向glibc函数(通常是fseek,mutex等).我知道不兼容的glibc/valgrind版本可能存在一些问题.

我尝试了各种valgrind版本和glibc版本,但没有运气.有什么建议?

g33*_*z0r 10

这可能不会回答您的问题,但会为您提供如何抑制某些错误的细节(其他人已提到但未详细描述):

首先,运行valgrind如下:

 valgrind --gen-suppressions=all --log-file=valgrind.out ./a.out
Run Code Online (Sandbox Code Playgroud)

现在输出文件valgrind.out将包含一些自动生成的抑制块,如下所示:

{
   stupid sendmsg bug: http://sourceware.org/bugzilla/show_bug.cgi?id=14687
   Memcheck:Param
   sendmsg(mmsg[0].msg_hdr)
   fun:sendmmsg
   obj:/usr/lib/libresolv-2.17.so
   fun:__libc_res_nquery
   obj:/usr/lib/libresolv-2.17.so
   fun:__libc_res_nsearch
   fun:_nss_dns_gethostbyname4_r
   fun:gaih_inet
   fun:getaddrinfo
   fun:get_socket_fd
   fun:main
}
Run Code Online (Sandbox Code Playgroud)

其中"stupid sendmsg bug"和链接是我添加的名称,用于引用此块.现在,将该块保存到下一次运行sendmsg.supp并告诉valgrind该文件:

valgrind --log-file=valgrind --suppressions=sendmsg.supp ./a.out
Run Code Online (Sandbox Code Playgroud)

并且valgrind会慷慨地忽略那个愚蠢的上游错误.


unw*_*ind 3

是的,研究一下 Valgrind 的抑制系统