標籤:
前言
我們在發布了自己的App以後,Windows Phone的Error Report機制會協助我們收集程式的崩潰資訊並發送到微軟的伺服器上,這可以輔助開發人員提高App的穩定性。
那麼如何利用這些dump file呢?首先我們需要下載這些dump file從微軟開發人員網站,然後藉助調試工具進行分析,我們這裡選用Windbg。 下載步驟
1. 登入http://dev.windows.com/en-us/dashboard
2. 選擇Windows Phone Store
3. 進入Reports,選擇Crash count,選擇 App和日期,點積Refresh按鈕
4. 點擊匯出stack traces,這裡包括最近30天的崩潰轉存記錄
5. 開發下載後的Excel檔案,這個excel檔案裡麵包含9列。分別是App的名字,App的ID,App的版本號碼,作業系統的版本號碼,出現問題的函數,異常類型,在30天內累計的崩潰次數,棧的回溯和Dump File。
6. 我們可以通過第E和F列快速看一下,是否是由我們的App導致的崩潰,然後點擊下載dump file進行分析。
使用Windbg開啟dump file
1. 下載windbg從微軟的網站:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx
2. 運行windbg,從檔案菜單中選擇開啟crash file,或者使用快速鍵Ctrl+D.
3. 設定symbol server,
a. 可以使用快速鍵Ctrl + S:
b. 或者命令”.sympath” 命令:
.sympath srv*e:\bclCache*http://msdl.microsoft.com/download/symbols
c. 也可以使用”.symfix”
4. 指定完symbol server以後,我們需要重新載入symbol file,在命令視窗輸入”.reload”。命令視窗可以使用快速鍵Alt+1定位。
5. 載入SOS模組。SOS.dll是Windbg為了調試managed代碼編寫的一個擴充命令模組。最新的windbg會自動載入這個模組。
6. 查看是否SOS的版本載入正確。我們首先查看coreclr.dll的版本號碼,然後對比當前載入的SOS.dll的版本號碼是否一致。
a. 在命令視窗輸入”lmv mcoreclr”。命令lmv是列印出模組的資訊,m+模組名字用來指定需要列印的模組,這裡是列印coreclr模組的資訊。
b. 在命令視窗輸入”.chain”。這個命令是顯示出預設的載入順序為所有載入的debug擴充模組。
對比coreclr模組的版本號碼和尋找鏈中的第一個是否匹配。如果不匹配,我們可以使用”.unload”卸掉已經載入的SOS模組,再次使用”.load + 路徑”選擇擴充Dll尋找鏈中的正確項。例如:
.unload e:\bclcache\symbols\sos_x86_ARM_4.0.50829.00.dll\503D5669449000
.load c:\Debuggers\SOS
.chain再次查看第一個是否匹配 小結
現在我們已經知道如何下載dump file並如何使用windbg來開啟它。後面的文章我舉一些實際中的例子來講解如何找到錯誤的代碼。
分享代碼,改變世界!
Windows Phone Store App link:
http://www.windowsphone.com/zh-cn/store/app/部落格園-uap/500f08f0-5be8-4723-aff9-a397beee52fc
Windows Store App link:
http://apps.microsoft.com/windows/zh-cn/app/c76b99a0-9abd-4a4e-86f0-b29bfcc51059
GitHub open source link:
https://github.com/MS-UAP/cnblogs-UAP
MSDN Sample Code:
https://code.msdn.microsoft.com/CNBlogs-Client-Universal-477943ab
MS-UAP
2015/1/12
Windows Phone App的dump 檔案分析