WinDbg抓取程式報錯dump檔案的方法

2021-08-01 08:49:50 字數 2727 閱讀 6933

**:

程式崩潰的兩種主要現象:

a. 程式在執行中的時候,突然彈出錯誤視窗,然後點錯誤視窗的確定時,程式直接關閉

例如: 「應用程式錯誤」 「c++錯誤之類的視窗」 「程式無響應」 「假死」等

此種崩潰特點:程式已異常,在你未點出錯視窗的確定或其他按,所有錯誤資訊都還保留在pc的記憶體中,可以直接抓取dump檔案。當然,如果你知道

怎麼樣操作可以讓程式崩潰,也可以用守株待兔的抓取方法抓dump檔案。

b.程式在執行中的時候,視窗和程序突然消失,沒有任何錯誤窗體

典型的現象:程式自動關閉 或者玩遊戲時,遊戲介面自動訊息等。

此種崩潰的特點:程式是自動崩潰的,當程式崩潰後,所有錯誤資訊就都訊息了,如果你要抓取這種崩潰的dump,就必須先設定好抓取環境,否則是無

法抓取dump檔案的。

以上是兩種最常見的程式崩潰現象,下面分享利用windbug工具抓取dump檔案的方法。

a. 抓取方法一

此方法特點:

1. 必須指定要抓取的程序或pid,同時程式必須已經在執行,否則無法抓dump.

2.必須在出現問題之前,先布置好抓取環境。

3.正常關閉程序也會出現dump檔案,因此需要確定抓到的dump是在程式崩潰時生成的。

windbg: 此工具是抓取dump的主角。

step2: 設定windbg抓取環境

先執行可能存在問題的程式,例如:ie,如果不先執行程式,則無法抓dump。

c:\windbg\adplus.vbs -crash -pn ieexplore.exe -o d:

執行此命令後,windbg會跳出黑色視窗,用於監控程序的執行狀況,注意不要關閉這個視窗,否則dump就抓不到了。

windbg引數說明:

-crash: 當程式掛掉的一剎那抓取dump,這個引數只能抓到程式報錯時的資訊,如果程式不報錯,則無法抓到dump。

-hang: 當開啟windbg之後就開始抓取dump,主要用於抓取程式異常,但程式未崩潰的情況,例如程序的cpu使用率100%。

-pn:程序的pid或程序名,如果是程序名,會區分大小寫。

-o: dump輸出路徑.

step3:收集dump檔案

當程式崩潰後,dump檔案會儲存在指定的輸出路徑內,例子中的dump儲存路徑是d盤,然後打包dump檔案,提交給軟體官方。

b.抓取方法二

此方法特點:

1. 無需指定要抓取的程序或pid,也不要求設定環境時必須存在程序,只要任意程式崩潰後都可以抓到dump。

2. 必須在出現問題之前,先布置好抓取環境。

3.程式正常關閉時,比如點x時,不會生成dump,只有程式崩潰時才會生成。

step2:設定windbg抓取環境

c:\windbg\windbg.exe -i

執行此引數時,windbg會彈出乙個提示,點確定後windbg介面會消失,此時代表環境已經設定好,現在就需要你想方設法讓程式崩潰,比如ie崩潰。

windbg引數說明:

-i: 將windbg作為預設的除錯工具,注意i必須為大寫,小寫無效。

step3:收集dump檔案

在程式崩潰時,wibdbg視窗再次彈出來時,使用以下命令儲存dump檔案。

.dump -ma d:\test.dmp

當開始儲存dump檔案時,左下角的狀態資訊會變成*busy*,表示windbg正在工作,dump儲存完成後會出現"dump successfully written"這個提示,接

下來就等dump儲存好,然後把dump檔案打包提交軟體官方。

c.抓取方法三

此方法特點:

可以在程式報錯後,直接抓取dump檔案,不需要額外設定,適用於突然發現報錯,且不確定能否復現問題時抓取dump,這是乙個非常重要的抓取方法,

強烈建議大家記住。

proces***plorer:此工具用於定位報錯視窗的程序id

step2:使用proces***plorer定位報錯視窗的程序pid

step3:執行windbg,抓取dump檔案

執行windbg後,依次點」file" --> "attack to a process" ,在彈出的介面中,找到剛才捕捉到的pid,然後點ok.

點ok完成後,你就會看到可以抓取的dump介面了,再用dump儲存引數儲存dump即可。

.dump -ma d:\test.dmp

windbg引數說明:

-m: 卻省選項,生成標準的minidump,轉儲檔案通常較小,便於在網路上通過郵件或其它方式傳輸。這種檔案的資訊量較少,只包含系統資訊、載入的模組dll資訊,

程序資訊和執行緒資訊。

-ma:帶有盡量多選項的minidump(包括完整的記憶體內容、控制代碼、未載入的模組等等),檔案較大,但如果條件允許(本機除錯,區域網環境),推薦用這個。

-mfhutwd: 帶有資料段,非共享的讀、寫記憶體頁和其他有用的資訊的minidump,包含了通過minidump能夠得到的最多的資訊。是一種折中方案。

技術改變世界! --狂詩絕劍

WinDbg除錯 崩潰程式

目的 學習和記錄windbg的一些使用。版本不是最新的,如果需要最新的可以自己在網上搜尋一下,當然還有很多漢化版的 我個人喜好原版 1.1關於配置 這個主要就是symbol的問題了,網上一般都會推薦 設定環境變數例如 我的電腦 右鍵選單 屬性 高階選項卡 環境變數 系統變數 新建 變數名 nt sy...

windbg除錯C 程式

windbg的安裝與配置 安裝後就可以在開始選單找到windbg了。要先除錯.net的程式,需要使用乙個擴充套件的dll,它在c windows microsoft.net framework v2.0.50727路徑下,檔名是sos.dll。有了它我們才能執行命令 clrstack 拷貝乙份到wi...

windbg工具安裝配置及dump抓取

安裝與配置windbg的symbol 符號 和symstore.exe 所以在環境變數path中將windbg安裝目錄新增進去,這一步是告訴windbg那兩個檔案放在什麼地方.第四步 新建乙個環境變數 nt symbol path值為 srv c mysymbol 還有一種方法新的方法是 設定值為c...