Windows Phone App的dump 文件分析


前言

我們在發布了自己的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按鈕

clip_image002

4. 點擊導出stack traces,這里包括最近30天的崩潰轉存記錄

clip_image004

5. 開發下載后的Excel文件,這個excel文件里面包含9列。分別是App的名字,App的ID,App的版本號,操作系統的版本號,出現問題的函數,異常類型,在30天內累計的崩潰次數,棧的回溯和Dump File下載地址。

6. 我們可以通過第E和F列快速看一下,是否是由我們的App導致的崩潰,然后點擊下載dump file進行分析。

clip_image006

使用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.

clip_image008

3. 設置symbol server,

a. 可以使用快捷鍵Ctrl + S:

clip_image009

b. 或者命令”.sympath” 命令:

.sympath srv*e:\bclCache*http://msdl.microsoft.com/download/symbols

c. 也可以使用”.symfix”

4. 指定完symbol server以后,我們需要重新加載symbol file,在命令窗口輸入”.reload”。命令窗口可以使用快捷鍵Alt+1定位。

clip_image011

5. 加載SOS模塊。SOS.dll是Windbg為了調試managed代碼編寫的一個擴展命令模塊。最新的windbg會自動加載這個模塊。

6. 查看是否SOS的版本加載正確。我們首先查看coreclr.dll的版本號,然后對比當前加載的SOS.dll的版本號是否一致。

a. 在命令窗口輸入”lmv mcoreclr”。命令lmv是打印出模塊的信息,m+模塊名字用來指定需要打印的模塊,這里是打印coreclr模塊的信息。

clip_image013

b. 在命令窗口輸入”.chain”。這個命令是顯示出默認的加載順序為所有加載的debug擴展模塊。

clip_image015

對比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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM