1

上週我在Windows Store上發佈了我的第一個Windows 8.1應用程序。到目前爲止,一切正常,但現在兩個用戶報告說,應用程序在啓動時立即崩潰。Win 8.1應用程序在用戶設備上崩潰 - 如何調試?

此外我發現在儀表板的報告/質量部分列出了一個CrashDump。我dowloaded故障轉儲,並試圖利用這個指令後發現使用WinDbg的問題的根源:http://blogs.msdn.com/b/ntdebugging/archive/2014/01/13/debugging-a-windows-8-1-store-app-crash-dump.aspx

我能夠按照指令幾乎到達終點,但隨後SOS庫中沒有找到:

0:006> .sympath SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols 
... 

0:006> .exr -1 
ExceptionAddress: 769eb1d7 (combase+0x000fb1d7) 
ExceptionCode: c000027b 
ExceptionFlags: 00000001 
NumberParameters: 2 
Parameter[0]: 03f3f32c 
Parameter[1]: 00000001 

0:006> !error c000027b 
Error code: (NTSTATUS) 0xc000027b (3221226107) - Anwendungsinterne Ausnahme. 

0:006> .ecxr 
eax=03f3f030 ebx=00000000 ecx=00000000 edx=00000000 
esi=03f3f360 edi=03f3f030 eip=769eb01f esp=03f3f314 
ebp=03f3f3bc iopl=0 nv up ei pl nz ac po nc cs=001b 
ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000212 
combase+0xfb01f: 769eb01f 6a03 push 3 

0:006> knL 
*** Stack trace for last set context - .thread/.cxr resets it 
... 

0:006> dt 03f3f32c combase!_STOWED_EXCEPTION_INFORMATION_HEADER* 
0x05f182e4 
    +0x000 Size    : 0x28 
    +0x004 Signature  : 0x53453032 

0:006> .formats 0x53453032 
Evaluate expression: 
    Hex:  53453032 
    Decimal: 1397043250 
    Octal: 12321230062 
    Binary: 01010011 01000101 00110000 00110010 
    Chars: SE02 
    Time: Wed Apr 09 13:34:10 2014 
    Float: low 8.46917e+011 high 0 
    Double: 6.90231e-315 

0:006> dt -a1 03f3f32c combase!_STOWED_EXCEPTION_INFORMATION_V2* 
[0] @ 03f3f32 
--------------------------------------------- 
0x05f182e4 
+0x000 Header : _STOWED_EXCEPTION_INFORMATION_HEADER 
+0x008 ResultCode : 80131500 
+0x00c ExceptionForm : 0y01 
+0x00c ThreadId : 0y000000000000000000010001100101 (0x465) 
+0x010 ExceptionAddress : 0x76943bff Void 
+0x014 StackTraceWordSize : 4 
+0x018 StackTraceWords : 0xa 
+0x01c StackTrace : 0x04c6c010 Void 
+0x010 ErrorText : 0x76943bff "趍ﯰ???" +0x 
+0x020 NestedExceptionType : 0x314f454c 
+0x024 NestedException : 0x05f1be44 Void 

0:006> !error 80131500 
Error code: (HRESULT) 0x80131500 (2148734208) - <Unable to get error code text> 

0:006> dpS 0x04c6c010 La 7697a9f1 combase!RoOriginateLanguageException+0x3b [d:\blue_gdr\com\combase\winrt\error\error.cpp @ 1083] 
63da3bc6 mscorlib_ni+0x9b3bc6 
63e41976 mscorlib_ni+0xa51976 
63e415c1 mscorlib_ni+0xa515c1 
5b72f9df System_Runtime_WindowsRuntime_ni+0x1f9df 
5b72f965 System_Runtime_WindowsRuntime_ni+0x1f965 
6372de66 mscorlib_ni+0x33de66 
5b72f934 System_Runtime_WindowsRuntime_ni+0x1f934 
5b6bff16 Windows_UI_ni+0x9ff16 
64492a36 clr!COMToCLRDispatchHelper+0x28 

0:006> !sos.pe 
The call to LoadLibrary(sos) failed, Win32 error 0n2 
"The system cannot find the file specified." 
Please check your debugger configuration and/or network access. 

0:006> .loadby sos clr 
The call to LoadLibrary(c:\symbols\clr.dll\52E0B78469b000\sos) failed, Win32 error 0n126 
"The system cannot find the file specified." 
Please check your debugger configuration and/or network access. 

我沒有這種調試經驗,沒有指令,我不知道我必須在WinDbg中使用的任何命令。

有沒有人有想法如何從這裏繼續?

我已經將CrashDump上傳到我的OneDrive。如果有更多經驗的人可以看看它,那將是非常好的: http://1drv.ms/1gZzrRK

是否能以某種方式從向支持人報告崩潰的用戶獲得更多信息?他們可以從系統中提取崩潰轉儲/錯誤報告嗎?

有沒有可能向這些用戶提供更改後的版本,以檢查這些更改是否會影響問題?

非常感謝!

回答

0

爲了更好地瞭解您的應用在用戶設備上運行時所做的操作,可以添加某種日誌記錄。本地登錄到文件是一個選項,但是一個糟糕的選項,因爲你必須讓你的用戶挖掘隱藏的文件來檢索你的應用程序日誌。這可能是可以接受的,但取決於你的情況。在這種情況下,您可能需要查看使用EWT進行記錄的this logging sample for Windows Store Apps

替代品將使用some kind of logging framework。我沒有任何經驗,所以我不能告訴你使用哪一個。至於爲用戶獲取更改後的版本:只需在本地構建應用程序包,將其放置在OneDrive上並向它發送鏈接即可。他們可以自行卸載應用程序(儘管它需要運行Powershell腳本並使用真實賬戶登錄)。我已經將這種方法用於多個客戶端,並且可行。