试图从转储文件调试Windows Store应用 [英] Trying to debug Windows Store App from dump files

查看:793
本文介绍了试图从转储文件调试Windows Store应用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

让我开始与我的主要问题,那么下面我将添加一些细节和历史。我已经做了研究,但似乎无法适应拼在一起。 。投票我下来之前,请要求澄清



我的问题:结果
为什么我的Windows商店应用启动和正确本地我赢8.1至64位和我赢8.1 32位(凌动)的平板电脑,但不启动其他用户?



当我从Windows应用商店认证故障转储文件,我怎么能得到调试符号来工作,所以我可以看到更多的问题?



当我在建立释放模式,它居然把符号到.pdb文件? ?它的索引符号



这里的历史:结果
我开发一个小游戏作为一个通用的应用程序,赢手机和Windows应用商店。赢手机版是在店里,得到下载,并能正常工作。



Windows应用商店的版本是有问题。



它运行在我的机器,赢8.1 64位上。它运行在我的绘图板,赢8.1的Atom,这是我从Visual Studio中通过远程调试安装。在这里传递我的盒子的应用程序认证。但是,当我提交包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将它们捡起来,并复制了名为.exe,.dll和.pdb文件我已提交到店,但仍获得这些消息的APX包:



WER38D7.tmp.dmp(内存转储):加载'* CryptoQuoteW8cs.exe 。模块始建无符号结果
'WER38D7.tmp.dmp'(CLR v4.0.30319:):加载'* CryptoQuoteW8cs.exe。没有匹配的二进制搜索找到
'WER38D7.tmp.dmp'(CLR v4.0.30319:):加载'* CryptoLogic.DLL。没有匹配的二进制找到。结果
致命异常被抓运行。见$ stowedexception在监视窗口中查看原始的异常信息。



所以,我很茫然。我如何得到我的应用程序的工作?什么错误是持有它呢?为什么它的工作,并在本地通过认证,而不是在商店?我怎样才能找到?我已经遍布Bing和微软,也许我只是没有寻找正确的事情。 !请帮助



编辑:结果
从啰嗦,我得到这个调用堆栈

  combase RoFailFastWithErrorContextInternal2(HRESULT hrError = 0xaaaaaaaa,无符号长cStowedExceptions = 0xaaaaaaaa,结构_STOWED_EXCEPTION_INFORMATION_V2 ** aStowedExceptionPointers = 0xaaaaaaaa)+ 0x10a [D:!\blue_gdr\com\combase\winrt !\error\error.cpp @ 1035] 
combase RoFailFastWithErrorContextInternal(HRESULT hrError = 0xaaaaaaaa,无符号长cStowedExceptions = 0xaaaaaaaa,结构_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


解决方案

OK,用的 WinDBG的扩展PDE.dll从的的http:/ /blogs.msdn.com/b/andrew_richards/相对=nofollow>安德鲁·理查兹,我看到了,因为一个应用程序崩溃,没有处理的 System.UnauthorizedAccessException的



我用 PDE.dpx -dse 来显示所有存放例外(那些0xC000027B例外):

  0:006> !PDE.dpx -dse 
启动内存扫描:0x0551fc7c($ CSP)
端的内存扫描:0x05520000(用户栈基)

0x0551fc94:0x012db914:!DSE combase STOWED_EXCEPTION_INFORMATION_V1
0x0551fcdc:0x0163c168:!DSE combase STOWED_EXCEPTION_INFORMATION_V1

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

  0:006> !PDE.dse 0551fc94 
存放异常阵列@ 0x0551fc94

存放异常#1 @ 0x012db914
0X80070005(FACILITY_WIN32 - 未修饰的Win32错误代码):E_ACCESSDENIED - 常规访问被拒绝错误

堆栈:!0x163c528
770ba9f1 combase RoOriginateLanguageException + 0x3b
6f137872 CLR SetupErrorInfo + 0x1e1
6f1fbc91 CLR MarshalNative :: GetHRForException_WinRT + 0x7d

! >>>相关CLR异常<<<

Exception对象:02b424f8
异常类型信息:System.UnauthorizedAccessException
的消息:其中,无效的对象>
的InnerException:其中;没有>
堆栈跟踪(生成)!!
SP IP功能
00000000 00000001未知未知+ 0X2
0551FC58 015702E9 CryptoQuoteW8cs UNKNOWN + 0×81
0551FC6C 01570251 CryptoQuoteW8cs UNKNOWN + 0×11

StackTraceString:其中;没有>
HRESULT:80070005

0:006> !PDE.dse 0163c168
存放异常阵列@ 0x0163c168

存放异常#1 @ 0x012db914
0X80070005(FACILITY_WIN32 - 未修饰的Win32错误代码):E_ACCESSDENIED - 常规访问被拒绝错误

堆栈:!0x163c528
770ba9f1 combase RoOriginateLanguageException + 0x3b
6f137872 CLR SetupErrorInfo + 0x1e1
6f1fbc91 CLR MarshalNative :: GetHRForException_WinRT + 0x7d

! >>>相关CLR异常<<<

Exception对象:02b424f8
异常类型信息:System.UnauthorizedAccessException
的消息:其中,无效的对象>
的InnerException:其中;没有>
堆栈跟踪(生成)!!
SP IP功能
00000000 00000001未知未知+ 0X2
0551FC58 015702E9 CryptoQuoteW8cs UNKNOWN + 0×81
0551FC6C 01570251 CryptoQuoteW8cs UNKNOWN + 0×11

StackTraceString:其中;没有>
HRESULT:80070005

存放异常#2 @ 0x01639748
0X80070005(FACILITY_WIN32 - Win32的未修饰的错误代码):E_ACCESSDENIED - 常规访问被拒绝错误

堆栈!!!0x69d29c4
6d33bd5e Windows_UI_Xaml DirectUI ::应用:: MainASTAInitialize + 0xa9
6d33bb05 Windows_UI_Xaml DirectUI :: FrameworkView ::初始化+ 5AH即可
6dc5a597 twinapi_appcore的Windows ::应用模型::核心:: CoreApplicationView :: CreateAndInitializeFrameworkView + 0xa7
6dc5a6eb twinapi_appcore的Windows ::应用模型::核心:: CoreApplicationView :: CreateAndInitializeFrameworkView + 0x1fb
74b2a83a SHCore微软:: WRL :: RuntimeClass<!微软:: WRL :: RuntimeClassFlags< 2 GT;,CScalingInfoBase,微软:: WRL :: FtmBase,微软:: WRL ::详细::无,微软:: WRL ::详细::无,微软:: WRL ::详细::无,微软:: WRL ::详细::无,微软:: WRL ::详细::无,微软:: WRL ::详细::无,微软:: WRL ::详细::无> ::'向量删除析构函数'+ 0x189
772c919f KERNEL32!BaseThreadInitThunk + 0xe
775a0bbb NTDLL!__ RtlUserThreadStart + 0x20的
775a0b91 NTDLL!_RtlUserThreadStart + 0x1b

在这里,你可以看到,在垫层问题是System.UnauthorizedAccessException的。该DMP只是一个转储,所以我不能看到什么 CryptoQuoteW8cs!UNKNOWN + 0×81 一样。



使用的 Application.UnhandledException事件来处理,你有没有通过try / catch语句处理,以防止应用程序崩溃的异常。



下面是关于如何处理异常具有很好的指导:



在您的Windows应用商店应用


Let me start with my main questions, then below I will add some specifics and history. I have done research, but can't seem to fit the pieces together. Please ask for clarification before voting me down.

My questions:
Why would my Windows Store app start and run correctly locally on my Win 8.1 64 bit AND my Win 8.1 32 bit (Atom) tablet, but not start for other users?

When I get the dump file from Windows Store certification failure, how can I get the debug symbols to work so I can see more of the issue?

When I build in 'Release' mode, does it actually put the symbols into the .pdb files? And does it index the symbols?

Here's the history:
I developed a little game as a Universal app, Win Phone and Windows Store. Win Phone version is in the store, getting downloaded, and works fine.

The Windows Store version is having issues.

It runs on my machine, Win 8.1 64bit. It runs on my tablet, Win 8.1 Atom, which I install via Remote Debug from within Visual Studio. It passes the App Certification here on my box. But when I submit the package to the Windows Store it doesn't pass, and the report says it crashes when starting up. (Somehow the first appx package was released on the store, then later they replied that it crashes, so some users say the app doesn't load.)

So, I download the debug data and open up the .dmp file. I get Exception Code 0xC000027B

Digging around online, I find this is a 'Language Exception', and is a general error saying the bug was Unhandled. Following articles like this (http://blogs.msdn.com/b/ntdebugging/archive/2014/01/13/debugging-a-windows-8-1-store-app-crash-dump.aspx)

I try to get the symbols for my app to load to see if that will help. I added a folder for my app to my local symbols cache folder (c:\symbols\myApp\1.3.0.7) thinking Visual studio would pick them up, and copied the .exe, .dll, and .pdb files from the apx package that I had submitted to the store, but still get these messages:

'WER38D7.tmp.dmp' (Minidump): Loaded '*CryptoQuoteW8cs.exe'. Module was built without symbols.
'WER38D7.tmp.dmp' (CLR v4.0.30319: ): Loaded '*CryptoQuoteW8cs.exe'. No matching binary found.
'WER38D7.tmp.dmp' (CLR v4.0.30319: ): Loaded '*CryptoLogic.DLL'. No matching binary found.
A fatal exception was caught by the runtime. See $stowedexception in the Watch window to view the original exception information.

So, I'm at a loss. How do I get my app working? What error is holding it up? Why does it work and pass Certification locally, but not on the store? How can I find out? I've been all over Bing and Microsoft, and maybe I'm just not searching for the right thing. Please help!

Edit:
From windbag, I get this call stack.

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

解决方案

ok, with the help of the Windbg Extension PDE.dll from Andrew Richards, I see that your application crashes because of an not handled System.UnauthorizedAccessException.

I used !PDE.dpx -dse to shows all Stowed Exceptions (those 0xC000027B exceptions):

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

Now I use !PDE.dse to display its data:

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

Here you can see that the underlaying issue is the System.UnauthorizedAccessException. The dmp is only a minidump, so I can't see what CryptoQuoteW8cs!UNKNOWN+0x81 does.

Use the Application.UnhandledException event to handle exception that you have not handled via try/catch to prevent the app from crashing.

Here is a good guide on how to handle exceptions:

Strategies for Handling Errors in your Windows Store Apps

这篇关于试图从转储文件调试Windows Store应用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆