Dump文件生成與分析

本文轉自:http://qiusuoge.com/8185.html

 

最近兩天由於項目的需要,研究了一下Dump文件相關的知識,今天做一個小節(由於研究不久並且第一次寫blog,希望網友們看到不要見笑)。

Dump文件是進程的內存鏡像。可以把程序的執行狀態通過調試器保存到dump文件中。

Dump文件是用來給驅動程序編寫人員調試驅動程序用的,這種文件必須用專用工具軟件打開,比如使用WinDbg打開。

當我們的程序發佈出去之後,在客戶機上是無法跟蹤自己代碼的bug的,所以Dump(擴展名是 .dmp)文件對於我們來說特別有用。我們可以通過.dmp文件把出現bug 的情況再現,然後根據再現的狀況(包括堆棧調用等情況),可以找到出現bug的行號,甚至是出現bug的點。

通過研究,我總結了兩種方式,如下:

(1)安裝WinDBG,具體方式可以參照:http://blog.csdn.net/oeichenwei/archive/2009/05/19/4201590.aspx

(2)通過Windows系統方式(我的是WinXP),參照:http://blog.csdn.net/wangyangtao/archive/2010/03/08/5355841.aspx

當然我的方式與以上的兩網址裏面的不一樣(學習以上的基礎上做的),我具體做法是:

(1)安裝WinDBG

(a)下載安裝WinDBG(安裝方式不贅述)

(b)打開WinDBG, File/Attach to a process/ 然後再列表中顯示需要監視的進程(.exe)

(c)當程序崩潰之後執行 DUMP 命令產生 dmp文件,命令有:.dump /m C:/dumps/myapp.dmp 、.dump /ma C:/dumps/myapp.dmp、 .dump /mFhutwd C:/dumps/myapp.dmp

執行以上就產生了dmp文件

(2)通過Windows系統方式

首先用Dr Watson 在運行中輸入drwtsn32.exe –i 安裝Dr Watson作爲默認應用程序調試程序。

再在在運行中輸入drwtsn32.exe 設置: 如圖:

日誌文件路徑爲 所要放置dump文件的文件夾,故障轉儲 就是該目錄下的dmup文件位置

選擇指令和錯誤數量可以寫多點

類型選完整選項選1 2 3 6項

當程序崩潰時,Dr Watson會在設定目錄下生成dump文件

通過以上兩種方式就生成了DUMP文件,下面就剩下分析了。我們通過兩種方式來進行分析
(1)WinDBG方式分析

(a)打開WinDBG,File/Sybolm File Path/ 指定發佈EXE 的時候.PDB生成的路徑

(b)file/Open Crash Dump/ 打開生成的DMP文件

(c)使用WinDBG的命令來分析Bug, 如命令: !analyze -v

(d)也可以使用快捷欄的功能查看一些變量的基本信息來幫助查看Bug

(2)通過VS2005分析,方法參照網址:http://www.cppblog.com/woaidongmao/archive/2009/10/21/99135.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章