让我先从我的主要问题开始,然后在下面我将添加一些细节和历史。我做过研究,但似乎无法将各个部分组合在一起。在投票给我之前请先澄清一下。
我的问题:
为什么我的Windows应用商店应用在我的Win 8.1 64位和我的Win 8.1 32位(Atom)平板电脑上本地启动和运行正常,但不能为其他用户启动?
当我从Windows Store认证失败中获取转储文件时,如何让调试符号生效以便我可以看到更多问题?
当我构建'Release'模式时,它是否实际将符号放入.pdb文件中?它是否为符号编制索引?
这是历史:
我开发了一款小游戏作为通用应用程序,Win Phone和Windows Store。 Win Phone版本在商店中,下载,并且工作正常。
Windows应用商店版本存在问题。
它在我的机器上运行,Win 8.1 64位。它运行在我的平板电脑Win 8.1 Atom上,我在Visual Studio中通过远程调试安装。它通过我的盒子上的App认证。但是当我将软件包提交到Windows应用商店时它没有通过,报告说它在启动时崩溃了。 (不知怎的,第一个appx软件包在商店发布,后来他们回复说它崩溃了,所以有些用户说应用程序没有加载。)
因此,我下载调试数据并打开.dmp文件。我得到了异常代码0xC000027B
在网上挖掘,我发现这是一个'语言异常',并且是一个错误,说错误是未处理的。以下文章(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'。找不到匹配的二进制文件 运行时捕获了一个致命的异常。请参阅Watch窗口中的$ stowedexception以查看原始异常信息。
所以,我很茫然。如何让我的应用运行?什么错误阻止它?为什么它在本地运行并通过认证,而不是在商店?我该怎么知道?我一直都在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
答案 0 :(得分:2)
好的,在Windbg Extension PDE.dll的Andrew Richards的帮助下,我发现您的应用程序因未处理System.UnauthorizedAccessException而崩溃。
我使用!PDE.dpx -dse
来显示所有Stowed Exceptions(那些0xC000027B异常):
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: <Invalid Object>
InnerException: <none>
StackTrace (generated):
SP IP Function
00000000 00000001 UNKNOWN!UNKNOWN+0x2
0551FC58 015702E9 CryptoQuoteW8cs!UNKNOWN+0x81
0551FC6C 01570251 CryptoQuoteW8cs!UNKNOWN+0x11
StackTraceString: <none>
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: <Invalid Object>
InnerException: <none>
StackTrace (generated):
SP IP Function
00000000 00000001 UNKNOWN!UNKNOWN+0x2
0551FC58 015702E9 CryptoQuoteW8cs!UNKNOWN+0x81
0551FC6C 01570251 CryptoQuoteW8cs!UNKNOWN+0x11
StackTraceString: <none>
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<Microsoft::WRL::RuntimeClassFlags<2>,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 event处理您未通过try / catch处理的异常,以防止应用崩溃。
以下是有关如何处理异常的良好指南:
<强> Strategies for Handling Errors in your Windows Store Apps 强>