Visual C++ - 内存泄漏检测

12

有什么建议吗?这篇SO帖子谈到了Visual Leak Detector,但我正在寻找其他工具。另外,请不要推荐this


_CRTDBG 有什么问题吗?通过二进制转储跟踪不够好,是吧 ;-) - Skizz
@Skizz: 滚动到底部 :) http://msdn.microsoft.com/zh-cn/library/e5ewb1h3%28v=VS.80%29.aspx - Jacob
CRT泄漏检测只要正确设置就可以正常工作;当然,一开始可能会有些困惑,但是一旦你弄清楚了,就永远不会忘记 :) - Luke
1
你为什么要寻找其他工具?VLD有什么问题吗?是否缺少某些特定功能? - Björn Pollex
2
我喜欢微软页面顶部的文字: 适用于: Visual Studio Express:否 标准版:否 专业版:否这意味着它什么都不适用。 - john k
也许它适用于“终极版”。 - Alexandre TryHard Leblanc
10个回答

6

我最近使用过 Visual Leak Detector,效果还不错。它很容易构建(只需包含vld.h),并且不需要任何工具。但是我发现需要编写一些脚本将输出解析为更有用的内容(它需要一个像样的 GUI)。请注意新网站 - 该项目正在 Codeplex 上积极维护 - Codeproject 链接非常旧。


4

2

1

正如Noah Roberts所建议的那样,我也认为内存验证器是Visual Studio中检测泄漏的最佳工具。

Purify也可以使用。


0

不久前问过类似的问题,但与2010有关:VS2010分析器/泄漏检测

如果您没有使用2010,则可以考虑AQtime。它大多数时候还算不错。但有时会出现找不到与泄漏相关的对象,只是显示“crt memory”或其他内容的情况。

另一个我最近尝试的是名为“Memory Validator”的工具。它的界面并不那么友好,但似乎确实有效,并且也能与2010一起使用(只是没有任何其他类型的分析器,这是商业工具中应该具备的功能之一)。

也许像其他类似问题在SO上提到的GlowCode一样,在我提问之前搜索过。


看起来你没有收到很多答案。我会去看看 AQtime.. 现在我正在使用 VLD,它类似于默认的 VS 工具,但更详细。 - Jacob
我只是使用了一个太新的编译器,目前几乎没有什么兼容它的东西。 - Edward Strange

0
Jacob,DevPartner Studio中的BoundsChecker工具包含两种VC++泄漏检测器。未经仪器化的版本将在进程关闭时列出泄漏。编译时仪器化的检测器将在泄漏发生时中断,显示泄漏点处的当前调用堆栈和分配堆栈跟踪,显示泄漏内存的分配位置。DPS和BoundsChecker 10.5的64位版本将于2011年2月4日发布,支持Visual Studio 2010、2008和2005的x64应用程序。我们还有一个新的定价模型,因此您可以仅许可BoundsChecker功能,并在以后发现需要其他分析器或静态分析功能时升级到完整的DPS套件。一定要与您的销售代表讨价还价。支付标价就像在新车上支付标价一样。无耻的宣传:我在DevPartner团队工作。DPS 10.5代表了我的团队自Compuware关闭NuMega实验室以来技术能力最大的发布。当10.5上线时,请为您自己的应用程序和技术堆栈进行评估。干杯。Matt Schuetze,DevPartner产品负责人(是的,这意味着在普通Scrum团队角色中的PO)。

0

https://sourceforge.net/projects/diagnostic/

http://diagnostic.sourceforge.net/index.html

我尝试了很多内存泄漏检测器,以至于难以计数。其中一些崩溃了,一些产生了无效结果,一些根本没有帮助。最终我自己制作了一个泄漏检测器,但是投入了太多的精力 - 所以暂时将其设为非免费。支持托管/本地/32位和64位架构。

如果您想进一步开发此工具,请随时与我联系。


更新了链接。但是已经很长时间没有碰那个项目了。 - TarmoPikaro

0

0

试试Dr.Memory吧。 他们有很好的Visual Studio集成,文档也非常优秀。 而且使用起来也很容易。


0

VLD 不能用于更严肃的项目。

英特尔有一个很好的工具叫做 Inspector。

在 Visual Studio 中寻找用于查找 C++ x64 二进制文件中泄漏的好工具,经过 3 天的搜索,这是我找到的唯一一个好选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接