【问题标题】:Dumping contents of lost memory reported by Valgrind转储 Valgrind 报告的丢失内存的内容
【发布时间】:2012-09-30 17:18:01
【问题描述】:

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

【问题讨论】:

    标签: memory valgrind memory-leaks dump


    【解决方案1】:

    您可以使用最新版本的 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)
    • @panzi 我认为这仅适用于上述 3.8.1,如 ppw 所述。我用 valgrind-3.11.0 试过了,没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 2020-09-17
    相关资源
    最近更新 更多