Windows 2000/XP/Server 2003、Windows 7/Vista 系统的蓝屏死机故障是很多人心中永远的痛。一旦 Windows 出现了蓝屏故障,面对屏幕上有如天书一般的错误代码,往往会使人一筹莫展。如果遇到了蓝屏故障,我们首先可以根据屏幕上的蓝屏故障错误代码初步判断故障原因。微软 KB 知识库文章为我们列出了一些常见蓝屏故障代码的原因,例如 0x000000D1 错误,通常是由硬件设备驱动程序配置不正确引起的;0x000000EA 错误,通常与显卡显示器设置不正确有关,等等。但是,如果在微软知识库中找不到有关蓝屏错误提示的说明,我们应该如何了解故障原因呢?
为了帮助我们分析蓝屏故障的触发原因,Windows 2000/XP/Server 2003 与 Windows 7/Vista 系统全都为我们提供了自动保存内存转储文件(Crash Dump File)功能。我们可以在 Windows 中进入控制面板、打开“系统”属性、切换至“高级”选项卡、然后打开“启动和故障恢复”选项,在“写入调试信息”下面选择“小内存转储(64KB)”、“核心内存转储”或“核心内存转储”,以便遇到蓝屏故障时自动保存内存转储文件。这样,我们就可以分析内存转储文件判断故障原因了,如附件的截图所示。
内存转储文件是一个扩展名为 .DMP 的文件。“小内存转储”文件保存在 Windows\Minidump 文件夹,文件大小为 64KB,它只记录有发生蓝屏故障时的关键信息;“核心内存转储”与“完全内存转储”文件则保存在 Windows 文件夹中,文件名为 MEMORY.DMP,它们分别记录有发生蓝屏故障时的核心内存信息与完整的内存信息。为了节省硬盘空间,通常我们可以选择“小内存转储”。
那么,我们应如何通过 .DMP 内存转储文件分析蓝屏故障的触发原因呢?这可以借助微软官方提供的 Debugging Tools for Windows 工具实现。我们可以到微软官方网站的如下地址:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
下载 Debugging Tools 进行安装,然后启动,在程序主菜单中选择“File(文件)”-“Open Crash Dump(打开内存转储文件)”,打开 .DMP 内存转储文件即可。Debugging Tools 可以自动为我们分析内存转储文件在蓝屏故障时记录的内存信息,并从中分析可能的故障原因。
例如,曾经有一台 Windows XP 的计算机经常发生错误代码为 0x0000007F 的蓝屏故障,原因未知。为了调查故障原因,笔者在 Windows XP 中设置了保存“小内存转储文件(64KB)”。当计算机再次发生了 0x0000007F 蓝屏故障、在重新启动 Windows 后,使用 Debugging Tools 打开了这台计算机保存于 Windows\Minidump 文件夹中的 .DMP 内存转储文件,Debugging Tools 经过自动分析后,弹出了一份分析报告,报告这个错误“Probably caused by TM_CFW.SYS(可能是由 TM_CFW.SYS 文件引起)”。原来,TM_CFW.SYS 位于 %SystemRoot%\system32\drivers 文件夹中,它是趋势的防火墙程序,用于将趋势防火墙以系统服务的形式随 Windows 启动一同加载。经过回忆,这台计算机正是在修改了趋势防火墙程序的设置后经常出现 0x0000007F 蓝屏错误的,因此趋势防火墙很可能出现了设置不当的问题。为了证实这一猜想,笔者在 Windows XP 中通过“控制面板”-“添加删除程序”卸载了趋势防火墙,然后再按照默认设置重新安装了一遍,果然问题得以解决。
已发表 2007年8月3日 12:00 作者 alx-zj