概述
一、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无法分析出更多的问题的原因,符号表设置方法如下:
- 首先,Ctrl+S弹出符号表设置窗口
- 然后,输入:SRV*C:Symbols*http://msdl.microsoft.com/download/symbols,点击OK
三、常用快捷键
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文档参考》
最后
以上就是活力自行车为你收集整理的WinDbg蓝屏分析入门一、WinDbg介绍二、符号表设置三、常用快捷键四、蓝屏信息分析五、学习参考的全部内容,希望文章能够帮你解决WinDbg蓝屏分析入门一、WinDbg介绍二、符号表设置三、常用快捷键四、蓝屏信息分析五、学习参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复