当我在程序上运行valgrind --leak-check=yes
时,会报告几个字节的丢失内存。是否可以查看此内存的内容(即转储存储在其中的数据)?
答案 0 :(得分:10)
您可以使用Valgrind的最新版本(3.8.1)执行此操作:
启动可执行文件,在启动时激活gdbserver:
valgrind --vgdb-error=0 ....<your program>
然后在另一个窗口中,将gdb连接到Valgrind(按照指示 由Valgrind提供)。 然后在相关位置放置一个断点(例如在主要末端) 并使用gdb
continue
命令直到达到断点。 然后从gdb进行泄漏搜索:
monitor leak_check full reachable any
然后列出相关损失记录nr
的可到达块的地址 monitor block_list <loss_record_nr>
然后,您可以使用gdb功能检查给定地址的内存。 另请注意可能有趣的命令“who_points_at” 如果你正在搜索谁保留了指向这个记忆的指针。