.NET的核心转储实用程序

本文关键字:实用程序 转储 核心 NET | 更新日期: 2023-09-27 18:29:27

在我过去作为COBOL大型机开发人员的生活中,我大量使用了一种名为Abendaid的工具,在发生异常时,该工具将为我提供一个完整的内存转储,包括内存中每个变量的格式化列表,以及突出显示违规语句的程序的完整堆栈跟踪。这使得确定错误原因变得更加简单,并通过调试和/或跟踪语句节省了大量步骤。

现在我已经过渡到C#和.NET web开发,我发现ASP.NET提供的信息只告诉一半,给了我一个堆栈跟踪,但没有任何变量或类信息。这会使调试更加困难,因为您必须使用调试器再次运行进程以尝试并重现错误,而对于间歇性错误或在SQL Server或CRM下运行的程序集,这并不容易。

我到处找了很多这样的东西,但我找不到任何明显的东西。有人知道是否有,或者如果没有,我需要从什么开始写一个吗?

.NET的核心转储实用程序

看看DebugDiag.exe-它包括一些实用程序,可以获得可以用windbg分析的内存转储。

调试器主机:调试器主机(DbgHost.exe)承载Windows符号调试器引擎(dbgeng.dll),以连接到进程并生成内存转储

(emphasys-mine)

在大量谷歌搜索".NET内存转储"后,我发现这是第一个非商业链接。SO上也有类似的线程:用于分析.Net应用程序内存转储的工具。

要自动生成流程转储,您可以:

  • 使用Windows调试工具中的AdPlus(它可以从工具的安装xcopy部署到目标计算机:无需在生产中添加安装)
  • 使用SysInternal中的ProcDump

一旦有了转储,就需要WinDBG中的SoS("Shrike之子")扩展来获取.NET级别的信息。