【问题标题】:Dump process memory to disk to analyze for memory leaks将进程内存转储到磁盘以分析内存泄漏
【发布时间】:2011-06-10 23:20:43
【问题描述】:

我有一个 32 位 msvc++ 应用程序在泄漏内存的生产环境中运行。它基本上会运行几个小时,直到耗尽所有 3 GB 的可寻址内存并终止。

我在想,如果有办法暂停进程并将其内存转储到磁盘,我可以分析内存以查看它是否存在任何泄漏模式。

不确定这是否可能。我只是把科学扔在墙上,看看有什么能坚持下去。

我们将不胜感激。

【问题讨论】:

  • 您无法在调试配置中运行它吗?
  • 可能,但我宁愿运行生产 exe 以不再引入任何变量。

标签: c++ windows memory-leaks


【解决方案1】:

只要您确信自己有某种方法可以通过分析进程的堆来找到有用的东西,这非常简单。所涉及的工具都是免费的,说明在这里:Dump Files

也就是说,如果您可以运行一段时间的调试版本,CRT 将为您完成所有工作。见Finding Memory Leaks Using the CRT Library

【讨论】:

【解决方案2】:

对于真正快速的方法,Purify 或 DevPartner Studio 通常会将您指向泄漏点,并向您显示从分配位置到泄漏位置的跟踪。它也会暴露很多其他错误。

如果您有时间的话,使用 CRT 内置工具也不错。这些工具要花钱,所以我想你要权衡一下使用 CRT 内存转储跟踪它们所需的时间成本和许可证成本。

在进行 Windows 开发时,这有助于快速查明许多漏洞。我更喜欢 DevPartner 而不是 Purify,但可能是因为我只在 Linux 下使用过 Purify,发现它的工作方式太麻烦了。

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多