有什么建议么?这篇 SO 帖子讨论了Visual Leak Detector,但我正在寻找其他工具。另外,请不要推荐这个。
10 回答
我最近使用了Visual Leak Detector,它工作得很好。构建它非常简单(只需 include vld.h
)并且不需要任何工具。我发现我需要编写几个脚本来将输出解析为对我的目的更有用的东西(它急需一个像样的 GUI)。请注意新网站——该项目正在 Codeplex 上积极维护——Codeproject 链接非常旧。
如果您能负担得起一些钱,请使用 Intel Parallel Inspector ( http://software.intel.com/en-us/intel-parallel-inspector )。
它不需要任何代码修改并提供良好的报告。
我必须在工作中寻找好的工具来做到这一点,这是我发现的(迄今为止)最好的工具。
正如 Noah Roberts 所建议的那样,我也觉得内存验证器是在 Visual Studio 中检测泄漏的最佳工具。
净化也有效。
对于更严肃的项目,不能信任 VLD。
英特尔有一个名为 Inspector 的好工具。
经过 3 天的搜索,在 Visual Studio 中使用 C++ 查找 x64 二进制文件泄漏的好工具后,这是我找到的唯一好选择。
还有应用程序验证器。它可以跟踪一大堆其他问题,除了您忘记释放win32对象(如句柄等)的地方的泄漏......
MSDN 链接是: http: //msdn.microsoft.com/en-us/library/ms220948 (VS.80).aspx
试试 Dr.Memory。他们有适当的视觉工作室集成,文档非常好。也很容易使用。
不久前问了一个类似的问题,但具体与 2010 年有关:VS2010 profiler/leak detection
如果您不使用 2010,您可以考虑使用 AQtime。大多数时候这并不太可怕。有时会想到它无法找到与泄漏相关的对象,而只是说“crt memory”或其他什么。
我最近尝试的另一个称为“内存验证器”。不完全是一个很好的界面,但它似乎确实可以工作,并且也可以与 2010 一起使用(只是没有任何其他类型的分析,这是我在这样的商业工具中所期望的)。
当我在询问之前进行搜索时,也许 GlowCode 在其他类似问题中提到过。
Jacob,DevPartner Studio 中的 BoundsChecker 工具包含两种用于 VC++ 的泄漏检测器。未检测的版本将在过程关闭时将泄漏制成表格。编译时检测检测器将在泄漏发生时中断泄漏,同时显示泄漏点的当前调用堆栈,以及显示泄漏内存分配位置的分配堆栈跟踪。64 位版本的 DPS 和 BoundsChecker 10.5 于 2011 年 2 月 4 日发布,为 Visual Studio 2010、2008 和 2005 提供 x64 应用程序支持。我们还有一个新的定价模型,因此您可以只许可 BoundsChecker 功能并升级到完整的 DPS仅当您以后发现需要其他分析器或静态分析功能时才使用套件。一定要和你的销售代表讨价还价。支付标价就像支付新车的标价一样。无耻的插件:我在 DevPartner 团队工作。DPS 10.5 代表了我的团队自 Compuware 关闭 NuMega 实验室以来最大的技术能力发布。请在 10.5 上线时针对您自己的应用程序和技术堆栈对其进行评估。干杯。Matt Schuetze,DevPartner 产品负责人(是的,这意味着 PO 在正常的 Scrum 团队角色中。)
https://sourceforge.net/projects/diagnostic/
http://diagnostic.sourceforge.net/index.html
我尝试了很多内存泄漏检测器,很难将它们全部计算在内。其中一些崩溃了,其中一些产生了无效的结果,其中一些根本没有帮助。最终,我制作了自己的检漏仪,但投入了大量精力 - 所以暂时不免费。支持托管/本机/32 位和 64 位架构。
如果您想进一步开发此工具,请随时与我联系。