Попытка отладки приложения Магазина Windows из файлов дампа

Позвольте мне начать с моих основных вопросов, затем ниже я добавлю некоторые особенности и историю. Я провел исследование, но, похоже, не могу соединить все вместе. Пожалуйста, попросите разъяснений, прежде чем голосовать против меня.

Мои вопросы:
Почему мое приложение Windows Store запускается и корректно запускается локально на моем Win 8.1 64-битном И моем Win 8.1 32-битном (Atom) планшете, но не запускается для других пользователей?

Когда я получаю файл дампа после сбоя сертификации Windows Store, как я могу заставить символы отладки работать, чтобы я мог видеть больше проблемы?

Когда я создаю режим "Release", он помещает символы в файлы.pdb? И это индексирует символы?

Вот история:
Я разработал небольшую игру в качестве универсального приложения, Win Phone и Windows Store. Версия Win Phone находится в магазине, загружается и работает нормально.

В версии Магазина Windows возникают проблемы.

Он работает на моей машине, Win 8.1 64bit. Он работает на моем планшете, Win 8.1 Atom, который я устанавливаю через Remote Debug из 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' (Minidump): загружен '*CryptoQuoteW8cs.exe'. Модуль был построен без символов.
'WER38D7.tmp.dmp' (CLR v4.0.30319:): загружен '*CryptoQuoteW8cs.exe'. Соответствующий бинарный файл не найден.
'WER38D7.tmp.dmp' (CLR v4.0.30319:): загружен '*CryptoLogic.DLL'. Соответствующий бинарный файл не найден.
Роковое исключение было обнаружено средой выполнения. Посмотрите $stowedexception в окне Watch для просмотра оригинальной информации об исключении.

Итак, я в растерянности. Как мне заставить мое приложение работать? Какая ошибка задерживает? Почему он работает и проходит сертификацию локально, а не в магазине? Как я могу узнать? Я был по всему Bing и Microsoft, и, возможно, я просто не ищу нужную вещь. Пожалуйста помоги!

Редактировать:
Из пустозвона я получаю этот стек вызовов.

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

1 ответ

Хорошо, с помощью Windbg Extension PDE.dll от Эндрю Ричардса я вижу, что ваше приложение вылетает из-за необработанного исключения System.UnauthorizedAccessException.

я использовал !PDE.dpx -dse чтобы показать все Stowed Exception (те исключения 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. Это только мини-дамп, так что я не вижу, что CryptoQuoteW8cs!UNKNOWN+0x81 делает.

Используйте событие Application.UnhandledException для обработки исключения, которое вы не обработали с помощью try / catch, чтобы предотвратить сбой приложения.

Вот хорошее руководство о том, как обрабатывать исключения:

Стратегии обработки ошибок в приложениях Магазина Windows

Другие вопросы по тегам