**:
程式崩潰的兩種主要現象:
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...