1、windbg介紹
windbg是微軟開發的免費源**級的除錯工具。windbg可以用於kernel模式除錯和使用者模式除錯,還可以除錯dump檔案。具體介面見下圖(圖1)
圖1:主窗體介面
2、windbg 分析dump步驟
2.1 、windbg分析dump檔案基本上試通過命令的方式,所以先介紹幾個相關命令。
1)!analyze : 擴充套件顯示當前異常或bug的資訊。一般使用!analyze -v
2) kv : 顯示棧資訊
3) ub : 向前反彙編,例如: ub (位址) 反彙編當前位址之前的兩條指令
4) u : 反彙編,例如: u (位址) 反彙編當前位址以後的9條指令
5) uf : 反彙編函式
5) .exr: 檢視exception_record資訊
6) .cls : 清屏
2.2、開啟dump格式檔案
方式一:通過選單【file】 -> 【open crash dump】 選擇dump檔案開啟,
圖2:開啟dumpe檔案
圖3:開啟後會列印一些dump的資訊
方式二:通過cmd開啟dos命令視窗,切換到windbg所在目錄,利用命令:windbg –z 「d:/lines2009-7-25-22-20-33-900.dmp」
這裡只介紹第一種方式操作。
2.3、新增symbol path(符號路徑)
分析dump檔案需要依賴pdb檔案,所以這裡的符號路徑就是pdb檔案所在的路徑,如下圖(圖4),新增方式與新增作業系統的path路徑的方式一樣。
圖4:(新增符號路徑)
2.3、執行命令
圖52.3.1 執行 !analyze –v, 分析dump檔案,結果如下圖(圖6)
圖6該結果比較重要的部分是 exception_record 塊。
// 崩潰時的異常記錄,可以使用.exr檢視
exception_record: ffffffff -- (.exr 0xffffffffffffffff)
// 崩潰時所執行的函式位址
exceptionaddress: 59c6f0d3 (gbq_custom_heilongjiang!gbqheilongjiangafterfilljobserviceplugin::fillnormdbsearchscope+0x000003b3)
exceptioncode: c0000005 (access violation)
exceptionflags: 00000000
// 附加異常碼
numberparameters: 2
parameter[0]:00000000
parameter[1]:00000000
attempt to read from address 00000000 //
關鍵資訊
2.3.2 執行 kv ,顯示棧資訊
u 59c6f0d3 這時可以詳細看到崩潰的地方。
ps:像這樣的問題用vs可能看不出具體那裡出現問題如下圖:
windbg分析dump檔案
1 開啟dump格式檔案 開啟windbg,通過選單 file open crash dump 選擇dump檔案開啟,也可通過cmd開啟dos命令視窗,切換到windbg所在目錄,利用命令 windbg z d lines2009 7 25 22 20 33 900.dmp z表示路徑 圖1.1 利...
windbg分析dump檔案
1 開啟dump格式檔案 開啟windbg,通過選單 file open crash dump 選擇dump檔案開啟,也可通過cmd開啟dos命令視窗,切換到windbg所在目錄,利用命令 windbg z d lines2009 7 25 22 20 33 900.dmp z表示路徑 圖1.1 利...
Windbg分析Dump檔案
windbg是微軟發布的一款相當優秀的原始碼級除錯工具,可以用於kernel模式除錯和使用者模式除錯,還可以除錯dump檔案。1 檢視高記憶體。2 檢視高cpu。3 程式異常。4 程式hang死。1 使用windbg偵錯程式attach到需要除錯的程序。會暫停程序的執行 2 抓取程序的dump檔案,...