【发布时间】:2012-09-30 17:18:01
【问题描述】:
当我在一个程序上运行valgrind --leak-check=yes 时,报告了一些丢失的内存字节。是否可以查看此内存的内容(即转储存储在其中的数据)?
【问题讨论】:
标签: memory valgrind memory-leaks dump
当我在一个程序上运行valgrind --leak-check=yes 时,报告了一些丢失的内存字节。是否可以查看此内存的内容(即转储存储在其中的数据)?
【问题讨论】:
标签: memory valgrind memory-leaks dump
您可以使用最新版本的 Valgrind (3.8.1) 做到这一点:
启动您的可执行文件,在启动时激活 gdbserver:
valgrind --vgdb-error=0 ....<your program>
然后在另一个窗口中,将 gdb 连接到 Valgrind(按照指示 由 Valgrind 提供)。 然后在相关位置放置一个断点(例如在 main 的末尾) 并使用 gdb
continue
命令直到到达断点。 然后从 gdb 进行泄漏搜索:
monitor leak_check full reachable any
然后列出相关丢失记录nr的可达块的地址
monitor block_list <loss_record_nr>
然后您可以使用 gdb 功能检查给定地址的内存。 还要注意可能有趣的命令“who_points_at” 如果您正在搜索谁保存了指向此内存的指针。
【讨论】:
valgrind: Bad option: --vgdb-error=0”。 (valgrind-3.6.1)