尝试从转储文件调试Windowsapp store应用

让我从我的主要问题开始,然后在下面我将添加一些细节和历史。 我已经做过研究,但似乎无法将各个部分组合在一起。 在投票给我之前请先澄清一下。

我的问题:
为什么我的Windowsapp store应用会在我的Win 8.1 64位和我的Win 8.1 32位(Atom)平板电脑上本地启动和运行正常,但不能为其他用户启动?

当我从Windows Store认证失败中获取转储文件时,如何让调试符号起作用,以便我可以看到更多问题?

当我建立’Release’模式时,它是否真的将符号放入.pdb文件中? 它是否为符号编制索引?

这是历史:
我开发了一款小游戏作为通用应用程序,Win Phone和Windows Store。 Win Phone版本在商店中,下载,并且工作正常。

Windowsapp store版本存在问题。

它运行在我的机器上,Win 8.1 64位。 它运行在我的平板电脑Win 8.1 Atom上,我在Visual Studio中通过远程调试安装它。 它通过我的盒子上的App认证。 但是当我将软件包提交到​​Windowsapp store时,它没有通过,报告说它在启动时崩溃了。 (不知怎的,第一个appx软件包在商店发布,后来他们回复说它崩溃了,所以有些用户说应用程序没有加载。)

因此,我下载调试数据并打开.dmp文件。 我得到了exception代码0xC000027B

在网上挖掘,我发现这是一个“语言exception”,并且是一个错误,说错误是未处理的。 以下文章( http://blogs.msdn.com/b/ntdebugging/archive/2014/01/13/debugging-a-windows-8-1-store-app-crash-dump.aspx )

我尝试加载我的应用程序的符号,看看是否会有所帮助。 我为我的应用程序添加了一个文件夹到我的本地符号缓存文件夹(c:\ symbols \ myApp \ 1.3.0.7),以为Visual Studio会将它们拿起来,并从apx包中复制.exe,.dll和.pdb文件我已经提交到商店,但仍然收到这些消息:

‘WER38D7.tmp.dmp’(Minidump):加载’* CryptoQuoteW8cs.exe’。 模块没有符号。
‘WER38D7.tmp.dmp’(CLR v4.0.30319 :):已加载’* CryptoQuoteW8cs.exe’。 找不到匹配的二进制文
‘WER38D7.tmp.dmp’(CLR v4.0.30319 :):已加载’* CryptoLogic.DLL’。 找不到匹配的二进制文
运行时捕获了一个致命的exception。 请参阅Watch窗口中的$ stowedexception以查看原始exception信息。

所以,我很茫然。 如何让我的应用运行? 什么错误阻止了它? 为什么它在本地运行并通过认证,而不是在商店? 我该怎么知道? 我一直都在Bing和微软,也许我只是在寻找合适的东西。 请帮忙!

编辑:
从windbag,我得到这个调用堆栈。

combase!RoFailFastWithErrorContextInternal2(HRESULT hrError = 0xaaaaaaaa, unsigned long cStowedExceptions = 0xaaaaaaaa, struct _STOWED_EXCEPTION_INFORMATION_V2 ** aStowedExceptionPointers = 0xaaaaaaaa)+0x10a [d:\blue_gdr\com\combase\winrt\error\error.cpp @ 1035] combase!RoFailFastWithErrorContextInternal(HRESULT hrError = 0xaaaaaaaa, unsigned long cStowedExceptions = 0xaaaaaaaa, struct _STOWED_EXCEPTION_INFORMATION_V1 ** aStowedExceptionPointers = 0xaaaaaaaa)+0x10b [d:\blue_gdr\com\combase\winrt\error\error.cpp @ 948] kernel32!BaseThreadInitThunk+0xe ntdll!__RtlUserThreadStart+0x20 ntdll!_RtlUserThreadStart+0x1b 

好的,在Andrew Richards的Windbg Extension PDE.dll的帮助下,我看到你的应用程序由于未处理的System.UnauthorizedAccessException而崩溃。

我使用了!PDE.dpx -dse来显示所有Stowed Exceptions(那些0xC000027Bexception):

 0:006> !PDE.dpx -dse Start memory scan : 0x0551fc7c ($csp) End memory scan : 0x05520000 (User Stack Base) 0x0551fc94 : 0x012db914 : !dse combase!STOWED_EXCEPTION_INFORMATION_V1 0x0551fcdc : 0x0163c168 : !dse combase!STOWED_EXCEPTION_INFORMATION_V1 

现在我用!PDE.dse来显示它的数据:

 0:006> !PDE.dse 0551fc94 Stowed Exception Array @ 0x0551fc94 Stowed Exception #1 @ 0x012db914 0x80070005 (FACILITY_WIN32 - Win32 Undecorated Error Codes): E_ACCESSDENIED - General access denied error Stack : 0x163c528 770ba9f1 combase!RoOriginateLanguageException+0x3b 6f137872 clr!SetupErrorInfo+0x1e1 6f1fbc91 clr!MarshalNative::GetHRForException_WinRT+0x7d >>> Associated CLR Exception <<< Exception object: 02b424f8 Exception type: System.UnauthorizedAccessException Message:  InnerException:  StackTrace (generated): SP IP Function 00000000 00000001 UNKNOWN!UNKNOWN+0x2 0551FC58 015702E9 CryptoQuoteW8cs!UNKNOWN+0x81 0551FC6C 01570251 CryptoQuoteW8cs!UNKNOWN+0x11 StackTraceString:  HResult: 80070005 0:006> !PDE.dse 0163c168 Stowed Exception Array @ 0x0163c168 Stowed Exception #1 @ 0x012db914 0x80070005 (FACILITY_WIN32 - Win32 Undecorated Error Codes): E_ACCESSDENIED - General access denied error Stack : 0x163c528 770ba9f1 combase!RoOriginateLanguageException+0x3b 6f137872 clr!SetupErrorInfo+0x1e1 6f1fbc91 clr!MarshalNative::GetHRForException_WinRT+0x7d >>> Associated CLR Exception <<< Exception object: 02b424f8 Exception type: System.UnauthorizedAccessException Message:  InnerException:  StackTrace (generated): SP IP Function 00000000 00000001 UNKNOWN!UNKNOWN+0x2 0551FC58 015702E9 CryptoQuoteW8cs!UNKNOWN+0x81 0551FC6C 01570251 CryptoQuoteW8cs!UNKNOWN+0x11 StackTraceString:  HResult: 80070005 Stowed Exception #2 @ 0x01639748 0x80070005 (FACILITY_WIN32 - Win32 Undecorated Error Codes): E_ACCESSDENIED - General access denied error Stack : 0x69d29c4 6d33bd5e Windows_UI_Xaml!DirectUI::Application::MainASTAInitialize+0xa9 6d33bb05 Windows_UI_Xaml!DirectUI::FrameworkView::Initialize+0x5a 6dc5a597 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationView::CreateAndInitializeFrameworkView+0xa7 6dc5a6eb twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationView::CreateAndInitializeFrameworkView+0x1fb 74b2a83a SHCore!Microsoft::WRL::RuntimeClass,CScalingInfoBase,Microsoft::WRL::FtmBase,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil,Microsoft::WRL::Details::Nil>::`vector deleting destructor'+0x189 772c919f kernel32!BaseThreadInitThunk+0xe 775a0bbb ntdll!__RtlUserThreadStart+0x20 775a0b91 ntdll!_RtlUserThreadStart+0x1b 

在这里,您可以看到底层问题是System.UnauthorizedAccessException。 dmp只是一个小型转储,所以我看不到CryptoQuoteW8cs!UNKNOWN+0x81作用。

使用Application.UnhandledException事件来处理未通过try / catch处理的exception,以防止应用程序崩溃。

这是一个关于如何处理exception的好指南:

处理Windowsapp store应用中的错误的策略