Windows 系统崩溃的时候会显示蓝色背景的错误报告,一般称之为“蓝屏”问题。蓝屏显示的错误报告不容易看懂,而且往往不是问题的根本所在。真正的问题记录保存在系统目录中(开启了系统“写入调试信息”功能才有这个记录),微软提供了一套工具来分析蓝屏错误记录。
要开启蓝屏系统错误记录,或称为“内存转储文件”(当计算机死机的瞬间的内存的映像),可以参考下面的设置方法(以 Windows 7 为例):
- 正常进入操作系统,右键单击“计算机”选择“属性”;
- 在弹出的界面中左侧菜单栏选择 “高级系统设置”;
- 在弹出的“系统属性”界面中选择“高级”标签页,然后单击“启动和故障恢复那一栏里的“设置”打开新的界面;
- “将事件写入系统日志”选中 (可用于进行系统日志分析);
- “自动重新启动”不选中;
- “写入调试信息”选择内存转储文件的类型, 共分两种模式“小内存转储” 、“核心内存转储”,一般选择“小内存转储”即可;
- 同时还可以设置相应的 dump 文件的存放目录,默认是“%SystemRoot%\Minidump”,也就是“C:\Windows\Minidump”。
注:分析不确定问题推荐设置为“小内存转储”,该模式可以保存较多的 dump 文件内容。确认需要核心内存转储文件进行分析时,再修改设置,这两种模式都只能保存一个内存转储文件。
有的时候甚至连系统都无法进入,总是开机之后死机蓝屏,然后自动重启又进入蓝屏死机状态。这种情况下,需要在开机的时候按 F8 键来选择高级启动项,比如,进入“安全模式”之后进入系统进行设置。至于具体什么样的“时候”合适,不太好描述,一个简单的操作是按了开机电源键之后不断的点击 F8,总能进入选择界面的。
但是如果这样也不行,那就没办法分析了。
假设得到了 minidump 文件(一般位于 C:\Windows\Minidump 文件夹下),就可以用 WinDbg 工具进行分析了。
WinDbg 是微软 Windows 系统开发工具(Windows SDK)中的一个小工具,并没有单独提供。但是可以在安装 Windows SDK 的时候将不需要的项目取消勾选,只留下“Debugging Tools for Windows”这一项。Windows 开发工具下载地址:http://msdn.microsoft.com/zh-cn/windows/hardware/hh852365
目前的 WDK 8.1 已经不适用于 Windows XP 了。 WinXP 需要下载使用 WDK 7.1.0。
特别的,在 Windows 7 中,如果已经安装了 Microsoft Visual C++ 2010 x86(或 x64) Redistributable,则会导致上述安装失败(见 kb2717426 )。此时需要从“开始”——>“控制面板”——>“卸载程序”中找到并卸载“Microsoft Visual C++ 2010”,然后再安装 WinDbg。如果需要 Microsoft Visual C++ 2010,可以在安装完 WinDbg 后从 Windows 更新中重新安装 Microsoft Visual C++ 2010。
使用 WinDbg 分析的一般步骤:
- 启动 WinDbg
- WinDbg 界面上,单击 File,选择 symbol file path (ctrl+s) 然后输入
srv*DownstreamStore*http://msdl.microsoft.com/download/symbols
这是直接使用微软服务器上的符号文件(见 Windows 符号 ),不需要预先下载。(参考)。
- 然后,还是在 File 菜单中,选择 open crash dump(ctrl+d),打开系统盘 Windows 目录下,Minidump 文件夹中的 dmp 文件。
- 等待 WinDbg 根据前面设置的符号文件的地址连接到微软网站获取符号信息。
打开 dump 文件后,WinDbg 会自动分析。首先显示 symbol 文件的位置(如果symbol 文件有问题,或者找不到 symbol 文件,会影响分析的结果),然后显示 dump 文件的环境(操作系统、补丁版本、时间等等),WinDbg 自动对 dmp 文件进行分析,并显示是哪个进程导致此次蓝屏。 - 在 WinDbg 界面底部的位置输入 !analyze -v 并回车,即可得到分析结果。
对分析结果进行解读是个技术性非常强的活,一般人干不了。我们可以在网上搜索,也可以到相关论坛提问请高手帮忙解答。©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/windbg-bsod-minidump/>。转载请保留此信息及相应链接。