DUMP檔案除錯

2021-08-07 13:35:43 字數 1652 閱讀 7627

一、vc6.0下

1、首先要生成

pdb和

map檔案,需要做以下設定:

勾選紅色的地方

按上面截圖的設定好後編譯即可。

二、dmp檔案生成

1、dmp

檔案的生成,這個需要依賴一些**來生成這個檔案,這裡就不貼**了。

程式測試下這個函式。

上面**讓他人為崩潰,執行完後崩潰,會生成dmp檔案。

三、windbg的配置和使用

1、先配置

symbol

(file \ symbol file path)

開啟後填入c:\symbols;srv*c:\symbols*

比如:c:\symbols;d:\nomi\worktest\testdumpforvc\debug

;;注意上面的「c:\symbols;

」,因為我在最上面已經把

symbolsc盤的

symbols

了,所以可以把後面的

去掉,後邊的

;d:\nomi\worktest\testdumpforvc\debug

路徑是pdb

檔案路徑

注意路徑不用包含pdb、

exe的名字 比如到

d:\\***\debug就行

2、配置原始碼路徑( file \ source file path )

把**路徑貼進去就行了。比如「d:\worktest\testdumpforvc」

3、設定

exe路徑

( file \ image file path )

填入執行程式路徑,只要到目錄層就行,例如「d:\worktest\testdumpforvc\release」

4.開啟

dmp檔案

可以直接拖dmp進去,也可用下面的方式開啟

5.開啟後檢測一些資訊,然後輸以下命令進行檢視

l 開啟dmp檔案後會看到一些設定資訊

l 輸入命令!analyze -v

看到以下資訊

再來對比下**裡的出問題的地方。

6.高版本的

dmp檔案設定

就拿2013來說

選擇生成對映檔案。

三、高版本的dmp檔案除錯。

1、高版本的可以用上面的方法進行

windbg

除錯,也可以自身的編譯器進行除錯。

自身的編譯器除錯,dmp檔案直接拖進去,然後,選擇除錯,如下圖,他會定位出崩潰位置

四、map檔案檢視 1、

map檔案裡儲存的是各個函式的偏移位址。

當程式崩潰時,彈出的框裡面會帶有函式位址(winserver會彈出,

win7

好像不會有那種介面彈出),根據這個偏移位址就能找到相應的函式。

2、根據

dmp檔案提示出錯的位址。去

map裡面找也能找著。比如

這裡提示出錯的位址是004014cb

開啟map檔案檢視

根據上面出錯的位址004014cb 找到位址範圍,在下圖中是

004014b0到

004014e0

中間。

從這就可以看出,是testcrash到createdumpfile中間出錯了。

再看下圖的函式,找到問題所在。

C 生成dump檔案,除錯dump檔案

dump 檔案是程序的記憶體映象 可以把程式的執行狀態通過偵錯程式儲存到dump檔案中 dump 檔案是用來給驅動程式編寫人員除錯驅動程式用的 這種檔案必須用專用工具軟體開啟 比如使用 windbg visualstudio開啟 當我們的程式發布出去之後 在客戶機上是無法跟蹤自己 的 bug 的 所...

C 除錯之建立Dump檔案和除錯Dump檔案

如何在發布後程式中捕獲程式的崩潰和異常往往是比較麻煩的事情,一般採用日誌記錄的方法來記錄程式執行的每個流程,但是通常為了程式執行的效能,日誌記錄的方法只是記錄程式執行的每個主要的處理流程,不能進行具體詳細的記錄,比如for 迴圈中的崩潰記錄。c 語言中呼叫window api函式createfile...

dump檔案 dump除錯案例1 未知跳轉

背景 自己手裡有乙個用duilib開發的工具在某乙個使用者那邊高頻崩潰。只要一啟動就崩潰,一天崩潰幾十次,很奇怪。從使用者那邊抓取dump檔案回來,調出windbg進行除錯查詢原因。過程 1.準備好pdb及原始碼檔案,windbg載入dump起來。命令列輸入.ecxr,然後切換看堆疊如下 報錯的 在...