如何診斷Windows CE的應用程式崩潰(續)

來源:互聯網
上載者:User

在《如何診斷Windows CE的應用程式崩潰》一文中我介紹了如何利用Remote Process Explorer的Crack Address功能定位程式的崩潰地址。但是看起來還是有很多人不知道怎麼使用這個工具,這篇文章詳細介紹一下。

首先要確保你的PC上有dbghelp.dll。微軟沒有公開PDB檔案格式,不過有解析PDB檔案的API,在dbghelp.dll中提供,最新版本可在微軟網站上下載。在微軟推出.NET Framework之前,基於COM組件編程很流行,因此微軟也以COM組件的形式提供了另外一組介面,叫DIA(Debug Interface Access)。Remote Proecess Explorer用dbghelp.dll解析WinCE偵錯符號,由於WinCE的可執行程式模組使用PE格式,偵錯符號檔案使用PDB格式,和Windows案頭平台一樣。因此它也可以分析Windows傳統型應用程式地址。dbghelp.dll可以放到系統目錄(c:\windows\system32),或者放到remote process explorer所在目錄。

其次應該把EXE/DLL和PDB放在一個目錄。如果放在不同目錄,dbghelp可能會找不到PDB。

具體用這個工具有幾步。舉個例子來說明,比如要定位下面的崩潰地址PC=03f7e034:

RaiseException: Thread=8d5108b0 Proc=81a37040 'device.exe'
AKY=00000205 PC=03f7e034(coredll.dll+0x0001e034) RA=80120ef4(NK.EXE+0x00020ef4) BVA=00000001 FSR=00000001

從PC=03f7e034(coredll.dll+0x0001e034) 這句我們知道三個重要訊息:崩潰模組coredll.dll,崩潰地址0x03f7e034,模組載入基地址0x03f7e034-0x0001e034=0x03f60000。CE5以前的版本不會顯示(coredll.dll+0x0001e034),基地址不能直接算出來。不過一般來說這些DLL如果你的系統沒有做過很大改變,每次載入的基地址是一樣的,所以你可以把系統運行起來查看它的載入基地址。

根據這三條資訊Remote Process Explorer就可以工作了:

1,Cracking Address填崩潰地址:0x03f7e034

2,base address填基地址:0x03f60000

3,模組路徑欄填coredll.dll的全路徑,可以用右面的按鈕定位。

 

現在可以試著按第三行的尋找按鈕(有一個放大鏡的表徵圖)。順利的話應該就能提示源檔案路徑、函數名和程式碼。在設當設定了偵錯符號搜尋路徑和源檔案搜尋路徑後,下面的文字框還能直接顯示原始碼,崩潰行用紅色標出。搜尋路徑在"File --> File Path..."對話方塊裡設定(多個路徑用分號;分隔):

 

由於產生PDB時的源檔案路徑和我們安裝Platform Builder的WINCE路徑肯定不一樣,因此最下面的"Source Path Mapping"還要做一些路徑映射,方便Remote Process Explorer搜尋原始碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.