WinDbg蓝屏分析入门

Windows 专栏收录该内容
7 篇文章 0 订阅

一、WinDbg介绍

       WinDbg,英文全称为Windows Debugger,Windows调试程序。

       WinDbg是Windows平台下面的一款调试工具,通过dmp文件对蓝屏、程序崩溃原因进行分析,定位问题根源。官方描述WinDbg功能为以下三点:

  • 调试内核模式和用户模式代码
  • 分析故障转储
  • 在代码执行时检查 CPU 寄存器。

        微软官方文档学习资料:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/

        WinDbg下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk/

二、符号表设置

        符号表是WinDbg的关键数据库,没有符号表,WinDbg无法分析出更多的问题的原因,符号表设置方法如下:

三、常用快捷键

       1、打开dmp文件:Ctrl+D

       2、关闭上一个dmp分析记录:Shift+F5

四、蓝屏信息分析

1、打开蓝屏dmp文件

      打开蓝屏dmp文件后,显示参数System Uptime表示系统运行时间。从该参数可以得知蓝屏出现的时间,从而进行蓝屏定位,例如小于1分钟为开机蓝屏,大于1分钟为上机或者玩的过程中出现问题。如下图,在系统运行后的47分钟3秒167毫秒出现了蓝屏。

2、使用!analyze -v进一步分析

      有时,在打开蓝屏dmp文件之后,会显示一个参数:Probaly caused by,表示可能导致蓝屏的驱动文件。如果没有这个参数,需要使用命令!analyze -v进行进一步分析。下图为执行命令!analyze -v之后显示的一个界面:

        第一个部分表示蓝屏代码,这里的蓝屏代码为ea。

        第二个部分表示WinDbg给的一些分析建议。

        第三个部分表示蓝屏代码ea的四个参数。

        这里通过点击help--Window,或者键盘F1进入帮助页面,查看蓝屏代码对应的参考信息,如下图。

       关闭debugger帮助界面,继续回到WinDbg调试,通过鼠标下滑可以查看触发蓝屏相关的应用程序以及堆栈信息,如下图:

       第一个部分表示蓝屏代码以及与之相关的四个参数。

       第二个部分表示触发蓝屏的进程。触发蓝屏的进程文件可能是exe文件,也可能是dat文件或者dll文件,触发蓝屏文件的类型并不固定。但是应用程序并不是导致蓝屏的真正原因,因为用户态程序不会导致蓝屏,只有内核态程序才会导致蓝屏。

       第三个部分表示堆栈信息。栈信息反映了错误发生前堆栈中的函数调用情况,从下至上进行调用。如上图,nt中的KeBugCheckEx函数被dxgkrnl中的函数TdrTimedOperationBugcheckOnTimeout调用,该函数又被dxgkrnl中的TdrTimedOperationDelay函数调用,然后TdrTimedOperationDelay函数被amdkmdag函数调用。通过这里的堆栈,分析导致蓝屏的主要原因。

       另外,在堆栈信息下面有一个参数是IMAGE_NAME,表示触发蓝屏的驱动程序。如下图,触发该蓝屏的相关驱动为dxgkrnl.sys。在这里,程序FMSIScan.exe的运行触发了dxgkrnl驱动程序的一个bug,发生蓝屏。判断该蓝屏现象背后是一个驱动bug之后,通过驱动dxgkrnl.sys所属平台或者所属供应商,从而推动蓝屏bug的修复。

五、学习参考

1、CSDN《系统蓝屏日志DMP文件分析工具WinDbg及教程》

2、CSDN《WinDBG工具配置及蓝屏dump简单分析》

3、CSDN《Windows蓝屏DMP文件分析》

4、《微软官方WinDbg文档参考》

  • 2
    点赞
  • 0
    评论
  • 22
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值