WinDbg分析DMP文件方法完全攻略


前言:在C++實際開發過程中,開發出來的程序,一般情況下由開發人員進行單元測試,然后移交 給測試人員進行測試。在開發人員測試出現的bug,我們可以直接在本地進行調試。如果測試人員測試出崩潰級別的bug,如果我們需要調試往往借助於vs提供的Remote Debugger 工具進行遠程調試(關於vs2010遠程調試的方法,請參考http://blog.sina.com.cn/s/blog_a459dcf5010153o7.html),然是當程序在用戶手中出現崩潰此時我們可以采用Remote Debugger進行調試,但是如果此時開發人員無法直接去 用戶現場調試,此時就需要用戶生成DMP文件,以便開發人員使用DMP文件進行分析。
 
    本文主要介紹C++開發過程中出現程序崩潰后,如何進行分析定位bug(基於xp系統)。
 
一、DMP文件獲取設置
  (1)在運行窗口中輸入 drwtsn32 -i ,並且點擊確定
WinDbg分析DMP文件方法完全攻略
 
  (2)在(1)確定后彈出如下對話框
WinDbg分析DMP文件方法完全攻略

  (3)在(2)彈出的確定框后點擊確定按鈕完成,將Dr.Watson設置為默認應用程序調試程序。
     Dr.Watson系統自帶的程序。
 
  (4)再次在運行窗口中輸入:drwtsn32,如下圖:
WinDbg分析DMP文件方法完全攻略
  
  (5)點擊確定按鈕,在彈出的對話框中按照下列方式設置
  WinDbg分析DMP文件方法完全攻略

  (6) 點擊確定按鈕完成DMP文件設置。
 
 
二、關閉Dr.Watson方法
(1)打開注冊表
(2)在注冊表中進入主鍵[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug],然后將“AUTO”鍵值設置為0 如下圖:
WinDbg分析DMP文件方法完全攻略

 
三、Windbg下載地址
 
 
四、DMP文件獲取
(1) 用vs2010創建一個基於win32的程序,其源碼如下:
WinDbg分析DMP文件方法完全攻略

 
(2)我們知道在學習C++中整數不能跟0進行除運算,否則會引起程序崩潰。而(1)中就是編寫能觸發0的異常,導致程序結束運行的程序。 編譯(1)中的程序,結果如下:
WinDbg分析DMP文件方法完全攻略

 
(3)運行(2)中test.exe程序 ,程序崩潰。如下圖:
WinDbg分析DMP文件方法完全攻略

 
(4) 按照一、DMP文件獲取設置步驟實現Dr.Watson設置為默認應用程序調試程序
 
(5)再次運行運行(2)中test.exe程序 如下圖:
  WinDbg分析DMP文件方法完全攻略

點擊確定完成dmp文件的生成。
 
 
(6)打開在(4)中設置dmp文件路徑。(本例中默認地址為:C:\Documents and Settings\All Users\Application Data\Microsoft\Dr Watson) 如下圖:
  WinDbg分析DMP文件方法完全攻略

其中user.dmp就是我們需要的dmp文件。
 
五、分析《四、DMP文件獲取》中獲取的DMP文件
(1)符號表路徑設置(參考下圖)
  WinDbg分析DMP文件方法完全攻略

 
(2)在彈出對話框中輸入:
D:\testdmp;srv*d:\symbolslocal*http://msdl.microsoft.com/download/symbols  點擊ok按鈕
  WinDbg分析DMP文件方法完全攻略

注意:D:\testdmp; 這個是我們存放符號的文件夾,在進行此步驟前創建。
其中;srv*d:/symbolslocal*http://msdl.microsoft.com/download/symbols設置的目的是下載該程序用到的操作系統相關的庫函數的符號表到本地
 
(3) 將前面《四、DMP文件獲取》中程序生成的符號test.pdb(下圖)拷貝到D:\testdmp中
  WinDbg分析DMP文件方法完全攻略

拷貝后結果如下
  WinDbg分析DMP文件方法完全攻略

 
(4) 源代碼路徑設置(參考下圖)
  WinDbg分析DMP文件方法完全攻略
 
(5)在彈出對話框中輸入:D:\Personal\My Documents\Visual Studio 2010\Projects\test 點擊ok按鈕
 
  WinDbg分析DMP文件方法完全攻略

(6)DMP文件導入(參考下圖)
 
WinDbg分析DMP文件方法完全攻略

WinDbg分析DMP文件方法完全攻略

 
點擊打開,完成dmp導入。導入后自動定位錯誤的行,並在command中給出崩潰的原因,如下如:
WinDbg分析DMP文件方法完全攻略


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM