【问题标题】:valgrind showing same memory leak multiple times in log filevalgrind 在日志文件中多次显示相同的内存泄漏
【发布时间】:2018-02-15 18:52:00
【问题描述】:

我在一家跨国公司软件公司工作。我的任务是修复软件中的内存泄漏。我正在使用 valgrind memcheck 工具。我使用了'valgrind --leak-check=yes --log-file=vg.log'。我发现 valgrind 在 vg.log 中以不同大小多次显示相同的内存泄漏,并且 vg.log 文件有 200 万行。结果,我无法确定哪个泄漏的大小最大。我的意思是哪一个是最大的泄漏。你有什么想法来解决这个问题吗?我希望相同的内存泄漏应该在 vg.log 中出现一次,并且具有聚合大小。我使用的是 valgrind 的 val3.12.0 版本。我正在使用 Red Hat Enterprise Linux Workstation 6.5 版。

【问题讨论】:

  • 泄漏是泄漏,无论大小都应该修复

标签: memory-leaks valgrind


【解决方案1】:

实际上 valgrind 有一个 --num-callers 选项,可以用来处理不同的类似内存泄漏。

【讨论】:

    【解决方案2】:

    泄漏按大小增加的顺序转储。因此,最后一次泄漏是最大的泄漏。每个泄漏描述看起来像

    XX bytes in B blocks are definitely lost in loss record R of N
    

    在哪里

    • XX 是该调用堆栈的泄漏总大小
    • B 是该调用堆栈发生泄漏的次数。例如,如果总共是 4 个块中的 4096 个字节,这意味着调用发生了 4 次,每次泄漏是 1024 个字节
    • R 是泄漏的运行计数
    • N 是不同泄漏调用堆栈的总数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 2019-02-10
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多