前言:WinDbg是微軟開發的免費源代碼級的調試工具。WinDbg可以用於Kernel模式調試和用戶模式調試,還可以調試Dump文件。本文的討論是在安裝了Debugging Tools for Windows 的前提下進行的,下載地址可以參考我之前的文章。WinDbg對於dump文件的調試可以通過菜單設置Symbol File Path、Source File Path ,並可設置多個路徑。
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文件
本文編寫了一個簡單能產生除數爲0異常的程序,讓其運行,產生崩潰,通過drwtsn產生dmp文件,然後通過windbg分析dmp文件,定位程序bug。 目的:學習windbg基本功能使用。 程序源代碼: void Crash(void) { int i = 1; int j = 0; i /= j;
} void main(void) {
Crash();
}
編譯環境:vc++6.0 編譯器設置:
這一步設置,要求對release版本不使用優化,如果使用優化,上面源代碼中Crash(void)函數將不被彙編。 這一步設置,產生release版本的調試符號表,爲後續定位錯誤準備。 步驟: 1、 安裝drwtsn32 用戶可以通過drwtsn32命令,查看dmp文件會被保存在何處。 2、 安裝windbg,Windbg下載地址: http://www.microsoft.com/whdc/devtools/debugging/default.mspx
3、 設置windbg A、符號表路徑設置
其中;srv*d:/symbolslocal*http://msdl.microsoft.com/download/symbols設置的目的是下載該程序用到的操作系統相關的庫函數的符號表到本地。 B、源代碼路徑設置 C、dmp文件導入 |
載入dump文件顯示如圖:
圖1.2 WinDbg界面
2、 分析dump文件
若生成的dump文件在本機,dump文件中將包含調試需要的PDB文件及源代碼路徑,若不在本機,可以通過WinDbg菜單[File] à [Symbol File path] 及 [Source File Path] 分別設置PDB文件路徑和源代碼路徑。如果程序涉及到DLL,需要將EXE、DLL所有涉及的PDB、源代碼路徑都包括。使用命令:
!analyze –v
將分析dump文件,並顯示程序崩潰處於的代碼行:
圖1.3 分析dump 文件