我们有一个c# .NET应用程序,其中有一个内存泄漏。我使用procdump从正在运行的应用程序实例中从生产机器获得内存转储。生产机器正在运行32位Windows和.NET 4.0。
exe配置设置为.net 4.0
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />当我把转储拉到我的开发框,windows 8.1 64位,并打开它与VS 2013,转储最初是打开罚款。但是,当我单击调试托管内存操作时,会收到以下错误消息:
此过程中使用的CLR版本不支持内存分析。
对于Windows和托管内存环境中的内存泄漏,我是新手,对所涉及的工具几乎一无所知。我做了谷歌搜索我得到的错误,但没有找到任何东西。任何帮助都是非常感谢的。如果我错过了一些明显的东西,我很抱歉
发布于 2013-10-22 15:58:35
我不知道是否可以使用procdump来查找.NET中的内存泄漏,我尝试过的一种有效方法是:使用Windbg和SOS。有两篇文章解释了如何使用Windbg+ SOS跟踪.NET内存泄漏:
如果您不喜欢Windbg,那么工具DebugDiag在跟踪内存泄漏方面也是非常有效的工具。
发布于 2014-08-27 09:59:42
请参阅此链接,它仅适用于在.Net 4.5下运行的进程。
在开始之前,关于本文中讨论的"Debug托管内存“特性有几点需要注意:
发布于 2016-02-09 11:44:45
从Windows7 /Server 2008 R2开始,有一种方法可以创建一个进程的克隆并创建这个克隆的转储,这样您关心的进程就不需要被挂起。在捕获转储时,使用procdump -r来使用此特性。 您还可以使用捕获ETW跟踪并使用PerfView分析数据。
https://stackoverflow.com/questions/19522329
复制相似问题