使用 WinDbg 解析蓝屏错误日志

后知后觉 暂无评论

Windows 系统的用户应该都遇到过蓝屏的问题,大部分用户可能并不会关心其原因,大致上就是骂一下,垃圾微软,垃圾系统。一般来说一旦出现蓝屏问题,若不对其原因进行核查,大概率还会继续出现同样的问题。

实际上蓝屏的原因有很多,最常见的就是软件内部错误、驱动问题,其他情况遇到的蓝屏问题较少出现。整体上说 Windows 的兼容性已经做得很不错的,毕竟它兼容着世界上种类最多的硬件,甚至还有很多年代久远的硬件及设备。

WinDbg 是什么?它能做什么?

WinDbg 是 Windows 平台下,强大的用户态和内核态调试工具。它能够通过 .dmp 文件轻松定位到问题根源,可以用于分析蓝屏、软件崩溃的原因,是开发 Windows 软件和日常使用中分析蓝屏原因的一个有力工具,使用它可以有效提高定位问题,解决软件开发中的 bug 的效率和准确率。

如何使用 WinDbg 呢?

收集蓝屏报错信息

做过开发的都知道,没有日志是没有办法进行方便调试的,因此要想分析蓝屏原因,必须要先有日志文件,Windows 系统实际上默认是开启蓝屏报错日志的。

但是部分精简过的系统,或者部分所谓的优化软件会将此功能禁用,因此需要确认此功能是否打开,配置完毕后即可在下次出现蓝屏时自动记录日志,方便溯源。

首先在桌面「此电脑」右键,若桌面没有「此电脑」可打开「文件资源管理器」,在左侧快速菜单中在「此电脑」选项上右键,和前一种方式的结果一致。

此电脑另一种方式

然后再左侧的控制面板主页中选择「高级系统设置」

高级系统设置

在「启动和故障恢复」子项中点击「设置」

启动和故障恢复设置

查看下图中所配置的路径,此路径为蓝屏日志的存放地址,推荐使用图中的默认路径

启动和故障恢复设置

默认路径对应系统盘的路径为(假定系统磁盘为 C:\)

C:\Windows\minidump

配置符号表

符号表是 WinDbg 中关键的“数据库”,用于解析 .dmp 文件。

首先下载安装 WinDbg ,请根据系统版本进行选择,若 64位系统请选择 AMD64 版本。

运行 WinDbg ,然后打开 [File] - [Symbol File Path ...] 或者快捷键 [Ctrl+S] 打开配置页面,配置符号表的存储目录。

小贴士:建议选择一个固定的位置存放符号表,符号表文件并不大,博主本次下载的符号表仅占用 27.5Mb ,因此可以放在 C: 盘根目录中。

符号表配置前

在其中填入以下内容

SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
实际上含义很简单,将符号表保存至 C:\Symbols 中,所需的文件从微软官网下载。

符号表配置后

分析蓝屏问题报告

保存后即可开始分析蓝屏日志,在 [File] - [Open Crash Dump...] 或者快捷键 [Ctrl+D] 打开蓝屏日志文件

文件菜单一览

小贴士:这里有一点需要注意,系统的标准存储路径是无法使用 WinDbg 打开的,因此需要在上一步中将 .dmp 文件复制到其他目录:比如「我的文档」中。

打开日志文件

打开的速度可能会较慢,因为会从微软官网下载符号表进行分析,等出现上述界面时即可。此时点击屏幕左下方的蓝色字符 !analyze -v 即可查看详细报错信息。

蓝屏日志分析

上图为详细报告,注意图中圈中的两个部分,第一个部分是蓝屏错误代码(用于指示导致的结果),第二个部分是导致蓝屏的进程(用于指示出现的原因)。

从上图即可明显看到是 MSI CentralSer 服务导致的蓝屏,蓝屏代码为 CLOCK_WATCHDOG_TIMEOUT_10_PROC 。这个进程是微星的主板驱动程序的进程,此时瞬间想到在出现问题的前一天,更新了微星的主板灯光同步驱动,因此定位到了问题,去微星的龙盾控制中心查看,正好发现灯控驱动又更新了一版,于是先去卸载旧版本驱动然后重启电脑后安装最新版本,开机待机一段时间后发现问题不再出现,问题解决。

补充:博主强烈建议在未发现功能有缺陷时,最好不要随便更新驱动版本,然而博主是个更新强迫症(摔。

附录

参考链接

如果遇到问题或者对文章内容存疑,请在下方留言,博主看到后将及时回复,谢谢!
回复
回答47+15=