dump文件 -- 2.内核模式的 dump 文件创建

1.1   创建内核dump文件

这里有三种方法去创建内核模式的dump文件:

Ø  你可以开启dump文件功能从控制面板中,然后系统会自己崩溃

Ø  你可以开启dump 文件功能从控制面板中,然后强制系统崩溃

Ø  系统没有崩溃的时候,你可以用调试工具去创建一个dump文件

使用 NMI 开关

也可以使用NMI开关来创建dump文件,你可以联系你的硬件供应商人确认你的电脑是否有这个开关(本文档没有包含如何使用它的细节)

1.2.1 开启内核模式dump文件功能

                在系统崩溃时候,是否创建dump文件取决于你是否打开了这个设置,和什么类型的dump文件将会被创建。

                Windows控制面板内核模式dump文件设置,只有系统管理员才可以修改这些设置。

                如何修改这些设置,到控制面板下,单击System标志,选择Advanced 面板。在Windows 2000下,单击 Startup and Recovery.  Windows XP或更新的版本上,单击 Startup and Recovery下的Setting 按钮。

                请看如下对话框:

Write Debugging Information 处,你可以选择你要创建多大的dump文件,把它作为默认的选项。只能有一个dump文件可以被创建在系统崩溃的时候。系统自己默认的是小dump文件。

同时你也可以选择或修改默认dump文件的路径和名称 。如果你修改了他们并且点击了OK,系统需要重新启动。

你的这些设置会应用到所有的系统生成的内核模式的dump文件中。但是这些设置并不影响你使用.dump文件创建的 dump文件。

1.2.2 强制系统崩溃

如果内核模式的dump文件功能被启动,大多数的系统崩溃时候会创建一个文件,并且蓝屏。

但是,这里有几种情况系统会被冻结住,并没有真正的内核崩溃。常见的冻结症状包括:

Ø  鼠标不能移动,不能做任何事情

Ø  所有的界面被冻结,鼠标 不能移动

Ø  所有的鼠标,键盘的输入都没有响应,硬盘也没有运转

如果是一个经验丰富的调试人员,他/她可以挂接上内核调试器并分析问题。但是,如果你不懂调试你就只能采取抓dump文件的方法。

A>    用调试器强制系统崩溃

如果KD(Kernel Debugger )调试器或者Windbg调试器 正在进行内核模式的调试,它可以强制系统发生崩溃,可以通过在命令窗口中输入.crash 命令(如果目标电脑没有马上崩溃,可以紧接着执行g命令)。如果创建dump文件的功能没有被禁止,dump文件就可以被成功的创建。

如果dump文件被创建,内核调试的主机端会得到通知,并被激活进行目标机器的内核调试。

 

B>    通过键盘操作强制系统崩溃

可以直接通过键盘操作使系统崩溃。在Windows XP系统或更新的系统中,这个功能可以通过端口i8042PS/2 键盘)实现。此外,这个功能也已用USB键盘实现在Windows 2003上。

右两件事情必须提前准备好:

1, 如果你希望生成dump文件,你必须要启动dump文件写入功能,选择好路经和文件名字,同时选择好文件大小。

2, 采用PS/2键盘,你必须开启‘键盘启动系统崩溃功能‘通过注册表设置,可以修改注册表:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters ,创建一个值CrashOnCtrlScroll,并且设置它为REG_DWORD 0x01(或者任何非零值)

3, 如果是使用USB键盘,你必须设置注册表‘HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters’并且创建一个值CrashOnCtrolScroll,并且设置它为REG_DWORD 0x1 (任何非零值)

备注:在采用USB键盘生成dump文件的时候受到kbdhid.sys驱动的限制。快捷键CTRL+SCROLL  LOCK + SCROLL LOCK 有可能无效,如果电脑停止响应高级别的中断请求。之所以有这个限制是因为USB中断比I8042中断的优先级低。

                在这些设置生效前必须重新启动系统。

                如果已经这样做了,用键盘导致崩溃的步骤,按住键盘区右边的CTRL键,同时按下SCROLL LOCK两次。

                有可能 采用CTRL+SCROLL LOCK SCROLL LOCK两次会导致电脑冻结停止响应,但是发生这样的情况非常少。即使CTRL+ALT+DELETE无效的时候CTRL+SCROLL LOCK SCROLL LOCK这个快捷键也有效。

                1.2.3 创建dump文件在没有系统崩溃的情况下

                如果KD或者Windbg正在进行内核调试,它可以直接创建dump文件即使系统没有发生崩溃。

                这种dump文件可以是全内存dump文件或者局部内存dump文件,控制面板里面的设置对这里的操作没有影响。

                然而被系统创建的dump文件                会写入到系统崩溃所发生的电脑上,但是这种方式创建的会写入到命令执行所在的机器上。具体细节参看.dump命令。

                1.2.4  验证创建的内核模式 dump文件

                如果你有电脑已经崩溃正在进行调试,你不太确定是否这个dump文件创建已经成功,你可以执行如下命令

                dd nt!IopFinalCrashDumpStatus L1

                这个命令会显示IopFinalCrashStatus变量的值。如果这个值等于0,则创建成功,如果它等于-1 (0xFFFFFFFF)则创建dump文件功能没有启动。任何其它的值表示创建dump文件发生了错误

posted @ 2009-11-27 17:41  tianhu  阅读(817)  评论(0编辑  收藏  举报