如何使用 Dump 文件?

引言

本文概述了使用 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

Dump file page in VS

而後 debug dump 文件。若是全部的路徑(源代碼和 PDB 文件)都配置正確,那麼你就可以調試到 crash 的地方,查看 call stack 等內容。blog

若是使用 WinDbg,你須要:get

  1. 打開 WinDbg 工具
  2. 打開 dump 文件(默認是 Ctrl + D)
  3. 告訴 WinDbg 加載正確的 MicroSoft symbol 文件,命令:.symfix,這個過程可能須要一些時間
  4. 告訴 WinDbg 加載 程序的 PDB 文件,命令:.sympath+ c:\pdblocation,將 "c:\pdblocation" 替換爲你本身的 PDB 路徑。注意 .sympath+ 之間不要有空格,不然可能會破壞步驟 3. 中的工做。
  5. 告訴 WinDbg 源代碼的位置,命令:.srcpath c:\app_build_1.0.100,將 "c:\app_build_1.0.100" 替換爲你本身的源代碼路徑。
  6. 告訴 WinDbg 能夠開始分析 dump 文件了,命令:!analyze -v

若是全部配置都是正確的,那麼後面 WinDbg 就會運行到 crash 的位置,以後你就能夠對應用程序進行深刻分析,這部份內容不在本文討論範圍以內。編譯器

引用

https://stackoverflow.com/questions/734272/how-to-use-windbg-to-analyze-the-crash-dump-for-vc-application

相關文章
相關標籤/搜索