当我运行valgrind --leak-check=yes
,报告上的程序失去的记忆的几个字节。 是否可以查看该存储器中的内容(即转储存储在其中的数据)?
Answer 1:
你可以做到这一点Valgrind的最后一个版本(3.8.1):
启动可执行激活在启动gdbserver的:
valgrind --vgdb-error=0 ....<your program>
然后在另一窗口中,连接一个gdb来Valgrind的(以下由Valgrind的给出的指示)。 然后把一个断点在相关的地方(例如,在其主要的结束),并使用gdb
continue
到达指令直到断点。 然后做从GDB泄漏搜索:
monitor leak_check full reachable any
然后列出相关的损失纪录NR的可达块地址(ES)
monitor block_list <loss_record_nr>
然后,您可以使用gdb的功能来检查指定的地址(ES)的内存。 还要注意潜在的有趣的命令“who_points_at”如果你正在寻找谁一直保持一个指向该内存。
文章来源: Dumping contents of lost memory reported by Valgrind