【问题标题】:How to see Valgrind Massif output (or other heap profiler) as program executes?如何在程序执行时查看 Valgrind Massif 输出(或其他堆分析器)?
【发布时间】:2019-12-26 18:24:14
【问题描述】:

在 LINUX 中使用 Valgrind Massif 时,我尝试实时查看 massif.out.pid 文件,但在 Massif 执行完成后会生成此文件。我想在代码中放置断点来观察某些指令对堆的影响,因为只有几个兴趣点。我知道我可以重写一些代码来管理它,但这意味着以一种不会成为最终结果的方式影响主题代码,因为它们是我想要执行此操作的众多程序。有没有办法在观察分析器分析堆的同时观察代码中的点,以便区分执行点?

【问题讨论】:

  • 您可以使用 VS 内存分析器并在命中断点后创建堆状态快照。
  • 很抱歉需要 linux 解决方案,但您的回复提示进行 google 搜索,从中可能会产生一个解决方案,以查看在程序运行时跟踪堆,来看看我的答案..感谢产品

标签: c++ linux heap-memory profiler massif


【解决方案1】:

显然Linux中有一个可以提供实时数据的工具,我没有尝试过,但在谷歌搜索后找到了它。它被称为 heaptrack,显然它可以在程序运行时跟踪堆:

http://milianw.de/blog/heaptrack-a-heap-memory-profiler-for-linux

【讨论】:

    【解决方案2】:

    在要查看内存堆使用情况的代码中写入 sleep(0.5)。 然后使用 heaptrack ./app 执行应用程序 然后用 heaptrack_gui app.heaptrack.gz 打开结果文件

    转到已消耗的水龙头并按时间线检查内存使用情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 2021-07-08
      • 1970-01-01
      • 2020-01-20
      • 2013-03-15
      • 2020-05-27
      • 2019-04-10
      相关资源
      最近更新 更多