我想知道 valgrind 是否有可能显示泄漏内存的值,例如(不是真正的 valgrind 输出!):

==15060== 12 bytes (***HERE***) in 1 blocks are definitely lost in loss record 1 of 1 
==15060==    at 0x4C2AAA4: operator new[](unsigned long) (in vgpreload_memcheck-amd64-linux.so) 
==15060==    by 0x5DC8236: char* allocate(unsigned long, char const*, long) (mem.h:149) 
==15060==    by 0x5EAC286: trim(char const*, nap_compiler const*) (file.cpp:107) 

***HERE***显示正在泄漏的字符串的确切值。我一直在查看文档,但一无所获。也许更熟悉该工具的人可以指出如何实现这一目标! (我不怕自己编译 :) )

请您参考如下方法:

Valgrind版本>= 3.8.0的GDB服务器提供monitor命令
黑名单
这将输出泄漏块的地址。

然后,您可以使用 GDB 命令(例如 x)检查泄漏的内存内容。

有关更多信息,请参阅
http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver

http://www.valgrind.org/docs/manual/mc-manual.html#mc-manual.monitor-commands


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!