Memory leaks RationalPurify未能跳转到内存泄漏

Memory leaks RationalPurify未能跳转到内存泄漏,memory-leaks,purify,Memory Leaks,Purify,因此,我的公司使用了一个名为RationalPurify(作为Microsoft Visual Developer Studio的插件)的程序来管理内存泄漏。该程序设计为允许您在遇到内存泄漏后单击它,然后跳转到发生泄漏的行 不幸的是,Purify出现故障,Purify不会跳转到发生泄漏的地方,它只提到发生泄漏的类和方法。不幸的是,有时候这就像雇一个向导帮你猎取熊,让他指向森林告诉你那里有熊一样有用 有Purify经验的人知道我如何解决这个问题,或者有一本好的手册吗?你确定你有调试版本吗?或者更确

因此,我的公司使用了一个名为RationalPurify(作为Microsoft Visual Developer Studio的插件)的程序来管理内存泄漏。该程序设计为允许您在遇到内存泄漏后单击它,然后跳转到发生泄漏的行

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


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

你确定你有调试版本吗?或者更确切地说,您启用了所有PDB?在可执行文件上尝试WindDbg,并检查!lmi命令什么是可见的

整个代码是否正确插入指令


也考虑使用其他类似的工具或微软的工具泄漏。

< P>我大约5年前使用过净化。那时候它真的很脆弱。他们一直承诺在“下一版本”中修复所有bug。最后我们放弃了。人们只能怀疑他们是否在产品上使用了自己的QA工具。哦,讽刺的是…

通常您有两个选择,一个是从Purify中的指令插入中排除模块DLL,这有时会有所帮助。其次是get BoundsChecker,这确实会使编译时插装速度慢得多,但细节级别要好一个数量级

当我们知道存在bug/crash时,我们通常在签入时使用Purify、健全性检查和BoundsChecker

BoundsChecker有一些很好的特性,比如仅仪表文件A.cpp和B.cpp,不包括所有其他文件


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

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


最后,您将需要大量耐心、重建和一点运气。

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

(我个人曾在一个大型解决方案中使用ScanVSSolutionForPurifyPlus.pl,它起到了很好的作用。有一点需要注意:当您为它指定
.sln
文件的名称时,您可能需要为它指定完整的路径名。)