天天看點

bugtrap microsoft 預設崩潰提示框_C/C++程式dll崩潰如何定位分析?

程式猿小夥伴們都知道,linux系統下如果程式出現崩潰問題,通過設定可以生成core檔案,然後開始一波犀利的gdb操作精準地找到問題所在,很是得心應手。那麼問題來了,在windows作業系統下會有core檔案在程式開小差的時候提供我們分析定位嗎,我們有沒有很好的手段可以定位問題呢?例如當程式員發出如下呐喊:

“客戶生産的程式崩潰啦,我也要崩潰啦”!這種情況我們可以怎麼做?

其實在windows平台也是可以在崩潰時候生成類似core檔案的dump檔案,我們可以通過調試dump檔案來還原程式崩潰時的狀态,調試工具我推薦windbg,屢試不爽,很好用。“Windbg是在windows平台下,強大的使用者态和核心态調試工具。相比較于Visual Studio,它是一個輕量級的調試工具,所謂輕量級指的是它的安裝檔案大小較小,但是其調試功能,卻比VS更為強大。它的另外一個用途是可以用來分析dump檔案”。

如何讓程式崩潰時候生成dump檔案呢,這裡需要我們在程式設計的時候添加dump檔案生成代碼,代碼比較通用,度娘上也有很多種寫法,這裡我們就簡單地貼下通用接口(見下圖),我們在程式初始化的時候加載此接口就行。

bugtrap microsoft 預設崩潰提示框_C/C++程式dll崩潰如何定位分析?
bugtrap microsoft 預設崩潰提示框_C/C++程式dll崩潰如何定位分析?

在有了dump檔案後,我們如何分析呢,這裡還需要保留我們在生成dll的時候産生的pdb檔案,一一對應。debug版本會生成pdb檔案,release版本預設不會生成pdb檔案我們需要設定下vc、vs編譯器,具體的設定不多講一般都在工程-設定裡面有debug選項勾選就行。

安裝windgb,可以通過win7.1sdk裡自帶的debug包進行安裝dbg_x86.msi進行安裝,安裝成功後會出現windbg調試工具。

bugtrap microsoft 預設崩潰提示框_C/C++程式dll崩潰如何定位分析?

當程式崩潰時,我們已經有dump檔案,pdb檔案,dll檔案,我們簡單介紹下怎麼樣用windgb工具來分析出錯的代碼行,首先需要配置Symbol path右擊file->Symbol file path進行符号表路徑設定,一般路徑為:C:Symbols;SRV*C:Symbols*http://msdl.microsoft.com/download/symbols 在c盤建立目錄Sysmbols,把dll和pdb檔案放到以及dump檔案都放在這個目錄下。

設定sysmbol路徑後,直接打開dump檔案,右擊“file-open crash dump”,選擇生成的dump檔案。這個時候windgb加載dump檔案需要等待一會,加載完成後,在最下面的指令行視窗輸入“!analyze -v”對檔案進行分析,結果如下圖所示,我們就可以精準的知道代碼的哪一行會有問題。

bugtrap microsoft 預設崩潰提示框_C/C++程式dll崩潰如何定位分析?

有了這個方法基本上再也不怕崩潰的問題,小夥伴們趕緊收藏吧。

超好用C/C++程式dll崩潰定位分析手段! - 開發專欄 - 恒生研究院​rdc.hundsun.com

bugtrap microsoft 預設崩潰提示框_C/C++程式dll崩潰如何定位分析?

C++和Python混合程式設計的利器 - 程式語言 - 恒生研究院​rdc.hundsun.com

bugtrap microsoft 預設崩潰提示框_C/C++程式dll崩潰如何定位分析?

繼續閱讀