WinDbg蓝屏分析入门
一、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蓝屏分析入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle-逻辑体系结构
- 下一篇: 两个日期的 月差