通过Valgrind的报失内存转储内容(Dumping contents of lost memor

2019-08-01 01:30发布

当我运行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