Debugging Tools for Windows

从键盘强制崩溃

可以直接通过键盘造成系统崩溃。在Windows XP中,该功能在使用i8042prt 端口键盘(PS/2 键盘)时可用,而在Windows Vista和之后的系统在USB键盘上也可用。可以通过注册表键来对按键进行完全的配置。

之前先要做两个预备工作:

  1. 如果希望创建崩溃转储文件,必须先启用dump文件,选择路径和文件名,并选择dump文件的大小。详细信息查看启用内核模式Dump文件
  2. 使用PS/2键盘,必须先在注册表中启用键盘产生的崩溃。在注册表键HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters下,创建一个名为CrashOnCtrlScroll的值,并设置为REG_DWORD 0x1 (或其他任何非0值)。
  3. 使用USB键盘,必须在注册表键HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters下创建一个名为 CrashOnCtrlScroll的值,并设置为REG_DWORD 0x1 (或其他任何非0值)。
  4. 注意 Kbdhid.sys允许从USB键盘产生一次内存转储过程的功能有一个限制。如果系统在高的中断请求优先级(IRQL)上停止相应的话,CTRL+SCROLL LOCK+SCROLL LOCK 快捷键就不起作用了。该限制是由于Kbdhid.sys 驱动是在比i8042prt.sys 更低的IRQL工作造成的。关于通过USB键盘使用这个功能的更多信息,查看文章 Generate a memory dump file by using the keyboard

必须重起系统这些修改才能生效。

这样做完之后,就可以用下面的方法来从键盘造成崩溃了。按住最右边的CTRL 键,然后安下SCROLL LOCK键两次。

如果CTRL+SCROLL LOCK+SCROLL LOCK 按键序列没有起效,系统可能会冻结起来。但是,这是非常少见的。CTRL+SCROLL LOCK+SCROLL LOCK产生崩溃即使在很多时候CTRL+ALT+DELETE不能工作时依然起效。

系统之后会调用KeBugCheck并产生bug check 0xE2(MANUALLY_INITIATED_CRASH)。如果没有禁用崩溃转储,这时会创建一个dump文件。

如果有内核调试器附加到冻结中的机器上,崩溃转储文件写入完成后会中断到内核调试器。

Build machine: CAPEBUILD