1

我在应用程序中遇到崩溃,即 Windows 7 崩溃,但不是在传统的“蓝屏死机”崩溃中,当设备驱动程序或其他内核空间进程崩溃整个系统时会发生这种情况,而是我看到锁定所有用户空间进程。

这是机器的状态:

(1) Windows 鼠标移动仍然响应,Aero 合成层仍在工作(资源管理器中的某些鼠标悬停效果仍然有效),但没有 win32 进程在工作,GDI 和用户会话似乎冻结。(2) Ctrl+Alt+Delete 不调出任务管理器。(3) 没有故障转储,没有蓝屏死机。

有没有人知道任何方法来收集有关崩溃的更多信息?我知道涉及到驱动程序级别的问题,我想收集人们可以使用的设备驱动程序级别的信息。当您遇到蓝屏死机时,您可以收集内存转储 (DMP) 文件,并将它们发送给开发人员以寻求帮助。我正在寻找的是一种跟踪进程和系统状态的方法,也许可以连接内核调试器或其他东西。我从来没有做过内核调试器的工作,所以我正在寻找一种开始的方法。

我可以在 win7/32 位 VM 中轻松重现崩溃,而且我还没有安装内核调试工具。我首先想知道,如果我似乎选择了一种有价值的方法(内核调试工具?),如果是这样,我真的不知道如何使用这些工具来收集可能有助于内核模式开发人员定位问题的信息.

4

1 回答 1

2

下载 WinDbg 并通过 Firewire 或串行电缆连接到有问题的机器(USB 在某些情况下也可以工作 IIRC)。这将允许您从远程计算机搜索正在运行的系统中的死锁。

另一种可能性是引发系统崩溃(事后分析)。您应该确保在将故障转储设置设置为完全转储之前。这将创建与您的 RAM 量相同大小的故障转储。当然,在将垃圾转储给人们(例如通过网络)时,这可能会造成问题。另请注意,转储中可能包含私有数据,具体取决于具体情况。

如何引发故障转储是我在这里描述的,下面引用了相关部分。如果您通过内核调试器连接,您还可以创建内存转储。


可以告诉键盘驱动程序导致 BSOD:

HKLM\CurrentControlSet\Services\kbdhid\Parameters

或(对于较旧的 PS/2 键盘)

HKLM\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

并设置了一个REG_DWORD命名CrashOnCtrlScroll1.

下次重新启动后,您可以通过 强制蓝屏Ctrl+ScrollLk+ScrollLk。在这种情况下,错误检查代码将是0xE2( MANUALLY_INITIATED_CRASH)。

于 2011-04-21T13:08:20.030 回答