倾倒Valgrind报告的丢失内存的内容

ond*_*fka 7 memory valgrind memory-leaks dump

当我运行valgrind --leak-check=yes程序时,会报告几个字节的丢失内存.是否可以查看此内存的内容(即转储存储在其中的数据)?

ppw*_*ppw 10

您可以使用Valgrind的最新版本(3.8.1)执行此操作:

启动可执行文件,在启动时激活gdbserver:

valgrind --vgdb-error=0 ....<your program>
Run Code Online (Sandbox Code Playgroud)

然后在另一个窗口中,将gdb连接到Valgrind(遵循Valgrind给出的指示).然后在相关位置(例如,在main的末尾)放置一个断点并使用gdb

continue
Run Code Online (Sandbox Code Playgroud)

命令直到达到断点.然后从gdb进行泄漏搜索:

   monitor leak_check full reachable any
Run Code Online (Sandbox Code Playgroud)

然后列出相关损失记录nr的可到达块的地址

   monitor block_list <loss_record_nr>
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用gdb功能检查给定地址的内存.另请注意可能有趣的命令"who_points_at",如果您正在搜索谁保留了指向此内存的指针.