因此,我的公司使用一个名为Rational Purify的错误程序(作为Microsoft Visual Developer Studio的插件)来管理内存泄漏。该程序设计为允许您在遇到内存泄漏后单击它,然后跳转到发生泄漏的行。
不幸的是,Purify发生故障,Purify不会跳到泄漏发生的地方,只会提到发生泄漏的类别和方法。不幸的是,有时这会像雇用指南来帮助你捕猎熊一样有用。让他指着森林,并告诉你那里有熊。
有没有Purify经验的人有任何想法我可以解决这个问题或者有一个好的手册来查看吗?
答案 0 :(得分:2)
通常,您有两个选项,一个从Purify中的检测中排除模块DLL,它有时会有所帮助。第二个是获得BoundsChecker,这确实编译时间很慢,但细节水平要好一个数量级。
当我们知道存在错误/崩溃时,我们通常在办理登机手续,健全检查和BoundsChecker时使用Purify。
BoundsChecker有一些很好的功能,比如只有乐器文件A.cpp& B.cpp,不包括所有其他的。
请注意,这两个应用程序都不能在64位操作系统上运行,并且BoundsChecker不会安装在64位操作系统上。如果您使用32位后端口切换到本机64位开发,则最令人沮丧!
答案 1 :(得分:2)
Purify就像一把瑞士刀。如果您知道如何使用它,您将获得一些结果,而不是最好的结果。如果不这样做,它将崩溃,因为它只是在Windows上运行的另一个程序。
最后,你需要很多耐心,重建和一点运气。
答案 2 :(得分:2)
Purify附带一个名为ScanVSSolutionForPurifyPlus.pl的脚本,它将确保您的项目文件具有Purify正常工作的所有正确设置。如果你还没有运行它,那就试试吧。
(我个人在一个大型解决方案中使用了ScanVSSolutionForPurifyPlus.pl,它就像一个魅力。一个警告:当你给它.sln
文件的名称时,你可能需要给它一个完整的路径名。)
答案 3 :(得分:1)
您确定要进行调试构建吗?或者更确切地说,您已启用所有PDB?在可执行文件上尝试WindDbg并使用!lmi命令查看可见的内容。
整个代码是否已正确检测?
另请考虑使用其他内容,例如free Visual Leak Detector或Microsoft的工具LeakDiag。
答案 4 :(得分:1)
我大约5年前使用过Purify。那真的很脆弱。他们一直承诺修复“下一个版本”中的所有错误。我们最终放弃了它。人们只能怀疑他们是否在自己的产品上使用了自己的QA工具。讽刺的是......