本文概述了使用 WinDbg 的一些必要步驟。app
第一步,你必須更改系統的配置使其可以生成 PDB 文件,包括 Release 版本。近期的 Visual C++ 編譯器默認啓用此配置,但早期某些版本編譯器須要你手動開啓此選項。保留每一個版本的 PDB 文件,這很重要!工具
第二步,你必須肯定生成 dump 文件的應用程序版本。當你本身生成了 MiniDumps(好比經過調用 MiniDumpWriteDump())的時候,最好在 MiniDump 的文件名里加上應用程序的完整版本號。固然,這須要有一個完善的版本控制機制,好比任何分支的任何編譯都會更新版本號。ui
如今假設你已經獲取了 dump 文件,你準確地知道生成 dump 文件的應用程序版本,以及該版本的 PDB 文件。debug
第三步,在你的代碼庫歷史記錄中找到該版本的源代碼,放在一個單獨目錄。版本控制
如今你能夠選擇使用 WinDbg 或者 Visual C++ 來調試 dump 文件了。使用 Visual Studio 更加簡單,可是 WinDbg 更增強大。大多數狀況下 Visual Studio 的功能已經可以知足需求了。調試
若是使用 Visual Studio,你須要在 Visual Studio 中添加文件的方式打開 dump 文件:code
而後 debug dump 文件。若是全部的路徑(源代碼和 PDB 文件)都配置正確,那麼你就可以調試到 crash 的地方,查看 call stack 等內容。blog
若是使用 WinDbg,你須要:get
.symfix
,這個過程可能須要一些時間.sympath+ c:\pdblocation
,將 "c:\pdblocation" 替換爲你本身的 PDB 路徑。注意 .sympath
和 +
之間不要有空格,不然可能會破壞步驟 3. 中的工做。.srcpath c:\app_build_1.0.100
,將 "c:\app_build_1.0.100" 替換爲你本身的源代碼路徑。!analyze -v
。若是全部配置都是正確的,那麼後面 WinDbg 就會運行到 crash 的位置,以後你就能夠對應用程序進行深刻分析,這部份內容不在本文討論範圍以內。編譯器