从冻结的计算机获取 .Net 应用程序的内存转储

问题描述

我的 32 位 .Net 程序有时会挂起整个 Windows 10 操作系统。我无法访问计算机上的任务管理器或控制台来转储我的 .Net 以在 Windbg 中进行分析。我们已经尝试过 RDP、RDP 到控制台、远程命令行——但没有成功访问计算机——我们只需要重新启动。

有没有办法在操作系统挂起时获取 Windows 10 诊断转储,然后将其作为 WinDBG 中的 .Net 应用程序进行分析?注意:我的应用程序是 32 位的,为 64 位应用程序创建的转储不适用于我在 WinDbg 中的应用程序。

谢谢

解决方法

不幸的是,如果您的 Windows 机器被冻结并且没有响应任何输入设备(键盘/鼠标),那么从该机器获取转储的唯一方法是设置 Windows 内核调试。

您必须按照步骤 described here 进行操作。一旦您的机器设置为内核调试,并且您已经确认您可以进入运行程序的机器的内核,请等到机器没有响应,然后再进入机器。

这将允许您检查窗口当前正在做什么。设置调试器和使用 windbg 内核调试需要一些学习曲线,但这是 Windows 提供的最强大的调试环境。您可以下载windbg here。它带有全面的文档。