将进程内存转储到磁盘以分析内存泄漏



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

我在想,如果有一种方法可以挂起一个进程并将其内存转储到磁盘,我可以分析内存,看看它泄漏的内容是否有任何模式。

不确定这是否可能。我只是把科学扔到墙上,看看什么东西会粘在墙上。

请提供一些意见。

只要你确信你有一些方法可以通过分析进程的堆来找到有用的东西,这就非常简单。所涉及的工具都是免费的,说明在这里:转储文件

也就是说,如果您可以运行调试构建一段时间,CRT将为您完成所有工作。请参阅使用CRT库查找内存泄漏

为了快速的方法,Purify或DevPartner Studio通常会直接指向泄漏,并向您显示从分配到泄漏位置的跟踪。它还将暴露出相当多的其他错误。

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

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

最新更新