因此,我的公司使用一个名为 Rational Purify(作为 Microsoft Visual Developer Studio 的插件)的令人愉快的错误程序来管理内存泄漏。该程序旨在让您在遇到内存泄漏后单击它,然后跳转到发生泄漏的行。

不幸的是 Purify 出现故障,Purify 不会跳转到发生泄漏的位置,它只会提及发生泄漏的类和方法。不幸的是,有时这和雇一个向导来帮助你猎熊并让他指着森林告诉你那里有熊一样有用。

有 Purify 经验的人知道我如何解决这个问题或者有一本很好的手册可以看吗?

有帮助吗?

解决方案

一般来说,您有两种选择,一种是从 Purify 的检测中排除模块 DLL,有时它会有所帮助。其次是获取 BoundsChecker,这会使编译时检测速度慢得多,但详细程度要好一个数量级。

当我们知道存在错误/崩溃时,我们通常使用 Purify 进行签入、健全性检查和 BoundsChecker。

BoundsChecker 有一些不错的功能,例如仅仪器文件 A.cpp 和 B.cpp,排除所有其他文件。

请注意,这两个应用程序都无法在 64 位操作系统上运行,并且 BoundsChecker 不会安装在 64 位操作系统上。如果您切换到带有 32 位后端口的本机 64 位开发,那是最令人沮丧的!

其他提示

Purify 就像一把瑞士刀。如果你知道如何使用它,你会得到一些结果,虽然不是最好的,但仍然是结果。如果不这样做,它就会崩溃,因为它只是 Windows 上运行的另一个程序。

最后,你需要很大的耐心、重建和一点运气。

Purify 附带一个名为 ScanVSSolutionForPurifyPlus.pl 的脚本,它将确保您的项目文件具有 Purify 正常工作的所有正确设置。如果您还没有运行过,请尝试一下。

(我个人在一个大型解决方案上使用过 ScanVSSolutionForPurifyPlus.pl,它的效果非常好。一个警告:当你给它你的名字时 .sln 文件,您可能需要为其提供完整路径名。)

你确定你有调试版本吗?或者更确切地说,您已启用所有 PDB?在可执行文件上尝试 WindDbg 并使用 !lmi 命令检查可见内容。

整个代码是否正确检测?

还可以考虑使用其他类似的东西 免费视觉检漏仪 或者微软的工具LeakDiag。

我大约 5 年前使用过 Purify。那时候真的很片面。他们一直承诺在“下一个版本”中修复所有错误。我们最终放弃了它。人们只能想知道他们是否在他们的产品上使用了自己的质量保证工具。噢,讽刺的是……

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top