Win 8.1应用程序在用户设备上崩溃 - 如何调试?

时间:2014-05-20 13:46:56

标签: windows-store-apps windows-8.1 crash-reports crash-dumps

上周我在Windows商店发布了我的第一个Windows 8.1应用程序。到目前为止一切正常,但现在两个用户报告该应用程序在启动时立即崩溃。

此外,我发现仪表板的“报告/质量”部分列出了一个CrashDump。我下载了CrashDump并尝试按照以下说明使用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

以某种方式可以从报告崩溃的用户那里获得支持的其他信息吗?他们可以从他们的系统中提取崩溃转储/错误报告吗?

是否有可能向这些用户提供更改后的版本以检查这些更改是否会影响问题?

非常感谢!

1 个答案:

答案 0 :(得分:0)

为了更深入地了解您的应用在用户设备上运行时的操作,您可以添加某种类型的日志记录。本地日志记录到文件是一个选项,但是很差,因为您必须让用户深入了解隐藏文件以检索应用程序日志。但是,根据您的情况,这可能是可以接受的。在这种情况下,您可能希望查看使用EWT进行记录的this logging sample for Windows Store Apps

替代方案将使用some kind of logging framework。我没有任何经验,所以我无法告诉你使用哪一个。

至于为用户获取更改版本:只需在本地构建一个app-package,将其放在OneDrive上并向其发送链接即可。他们可以自己加载应用程序(虽然它需要运行Powershell脚本并使用真实帐户登录)。我已经将这种方法用于了几个客户端,并且它是可行的。