【问题标题】:Getting memory dump of .Net app from frozen computer从冻结的计算机中获取 .Net 应用程序的内存转储
【发布时间】:2021-03-03 15:34:17
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 考虑使用procdump,它可以配置为在各种条件下进行转储,包括定期转储,如果没有更具体的可以确定的话。如果单个用户进程设法使整个机器无响应,这通常是由于它分配了太多内存导致发生抖动和/或 100% CPU,因此内存/CPU 条件应该足够了。您还可以通过使用作业来限制进程内存,但似乎没有很好的命令行工具。
  • “挂起整个 windows 10 操作系统”表示您可以将机器配置为捕获内核转储。
  • 您可以配置键盘以导致蓝屏,通过按某个热键来调试内核转储。见docs.microsoft.com/en-us/windows-hardware/drivers/debugger/…

标签: c# .net windows windbg


【解决方案1】:

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

您必须按照described here 的步骤操作。一旦您的机器设置好进行内核调试,并且您已验证可以侵入运行程序的机器的内核,请等到机器无响应后再侵入机器。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多