用于检测C#和非托管C++应用程序内存泄漏的工具

6
我们有一个应用程序,它是使用C# .NET Framework 2.0开发的,并与一个COM组件(该组件是使用C++非托管代码开发的)进行交互。有时这个应用程序会抛出内存不足异常(很难重现)。
我们希望有一个工具来找出是否存在任何内存泄漏,并确定内存异常的根本原因。最理想的工具应该能够连接到用户机器上正在运行的进程以进行分析。
我们尝试过.NET内存分析器,但它只能连接到.NET Framework 4.0运行中的进程。我们还使用了Memory Validator(C++内存泄漏检测器),但是当连接到正在运行的进程时,该工具没有给出足够的提示信息。
4个回答

3

2

简短回答

你尝试过Microsoft Application Verifier吗?它是一个非常小巧、甚至可以说是极简主义的工具,但却非常强大。

详细回答

在我调查内存泄漏问题期间,我使用了Microsoft WindbgMicrosoft Application Verifier以及彻底评估了Red Gate ANTS Performance Profiler(我已经推荐购买,并且我个人见过许多不同团队的开发人员也推荐购买)、DotTrace.Net Memory Profiler

学习并使用这些工具肯定会有所收获,也许可以安装在虚拟开发环境中,由团队中的开发人员共同使用。

如果你评估这些或其他任何工具,对我来说最大的卖点将是能够使用Windbg获取的内存转储进行调查,因为即使从客户那里获得这些也是最容易的。


0

0

对于最基本的测试,你可以使用sysinternals procexp.exe来检查是否真的存在内存泄漏问题。当遇到一个未预期的空指针时,很多COM代码会抛出内存不足的异常,所以异常代码可能是误导性的。


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