2015-08-23 4 views
12

У меня есть приложение в магазине, которое вызывает у меня головные боли. сообщил мой клиент, и я проверил, что приложение падает/закрывается по следующему сценарию:Windows 10 Crash Whodunit

  • Запустить приложение
  • закрыть приложение
  • Подождите, по крайней мере, ~ 15 минут
  • Откройте приложение

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

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

Дополнительная информация: У меня нет фоновых задач или обновлений для плитки.

У меня есть три суб-вопросы:

  1. Какие хорошие места, чтобы искать в системе, чтобы узнать больше о том, почему приложение закрывается?
  2. Возможно ли, чтобы я запустил хранилище в моей системе, чтобы я мог запускать некоторые тесты, не отправляя приложение в магазин каждый раз?
  3. Исходя из того, что приложение 1 запускается в первый раз 2) запускается в любое последующее время при запуске в течение ~ 15 минут или предыдущий запуск 3) закрывается при запуске, когда предыдущий запуск был> 15 минут назад 4) это происходит только в сборке магазина, есть ли у кого-нибудь идеи, что может вызвать это?

UPDATE:

Я пытался отладить версию магазина из приложения с помощью Visual Studio и все, что я могу увидеть следующее:

Exception thrown at 0x00007FFF54D7A1C8 (KernelBase.dll) in App.exe: 0x40080201: WinRT originate error (parameters: 0x000000008000000E, 0x000000000000002C, 0x0000006E46EAE9B0). 
Exception thrown at 0x00007FFF54D7A1C8 (KernelBase.dll) in App.exe: 0x40080201: WinRT originate error (parameters: 0x000000008000000E, 0x0000000000000046, 0x0000006E46EAE630). 
The thread 0x1be8 has exited with code 1 (0x1). 
The thread 0xfa8 has exited with code 1 (0x1). 
The thread 0x115c has exited with code 1 (0x1). 
The thread 0x730 has exited with code 1 (0x1). 
The thread 0xed4 has exited with code 1 (0x1). 
The thread 0x1894 has exited with code 1 (0x1). 
The thread 0x18a0 has exited with code 1 (0x1). 
The thread 0x194c has exited with code 1 (0x1). 
The thread 0x1a3c has exited with code 1 (0x1). 
The thread 0x1988 has exited with code 1 (0x1). 
The thread 0x16ec has exited with code 1 (0x1). 
The thread 0x1584 has exited with code 1 (0x1). 
The thread 0xfd0 has exited with code 1 (0x1). 
The thread 0xd8c has exited with code 1 (0x1). 
The thread 0xcec has exited with code 1 (0x1). 
The thread 0x16b4 has exited with code 1 (0x1). 
The thread 0x12f8 has exited with code 1 (0x1). 
The thread 0x146c has exited with code 1 (0x1). 
The thread 0x36c has exited with code 1 (0x1). 
The thread 0x1854 has exited with code 1 (0x1). 
The thread 0x1ae4 has exited with code 1 (0x1). 
The thread 0xa38 has exited with code 1 (0x1). 
The thread 0x230 has exited with code 1 (0x1). 
The program '[3840] App.exe' has exited with code 1 (0x1). 

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

Я пытался на исключении и шаг за шагом, чтобы увидеть, что вызывает его, но все, что я получил другое исключение:

Exception thrown at 0x00007FFF54D7A1C8 in App.exe: Microsoft C++ exception: _com_error at memory location 0x000000EE2788E9D0. 

Я загрузил версию приложения в магазин со встроенной пасхой яйцо, позволяющее мне отключить весь код в расширенном заставке. Даже весь код отключен, он все еще падает/закрывается.

UPDATE 2: Временной интервал, после которого приложение начинает закрываться при запуске, похоже, связано с тем, как система переходит в спящий режим/спящий режим.

+1

Если вы этого еще не сделали, я бы попытался отладить сборку хранилища с помощью Visual Studio. В меню VS выберите Debug -> Other Debug Targets -> Debug Installed Package –

+0

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

+0

см. Обновленный вопрос –

ответ

11

Я думаю, что это может иметь какое-то отношение к жизненному циклу приложения.

После того как ваше приложение приостановлено пользователем, оно может быть завершено ОС из-за ограничений ресурсов. Когда это произойдет, предыдущие данные сеанса в вашем приложении будут потеряны. Поэтому, если у вас нет каких-либо проверок для восстановления данных, и если ваш запуск приложения зависит от этих данных, приложение выйдет из строя и даст вам, например, NullReferenceException s.

Один из способов отладки заключается в использовании Visual Studio Lifecycle Events отладчик. Чтобы активировать его, вам нужно запустить приложение, а затем открыть События жизненного цикла на панели задач (см. Изображение ниже) и выберите Приостановка и выключение. Обратите внимание, что это приведет к закрытию приложения. Теперь запустите приложение с помощью Visual Studio, и на этот раз он запускается из режима Terminated.

enter image description here

Обычно вы увидите следующий фрагмент кода в App.xaml.cs. Это хорошее место для восстановления вашего предыдущего состояния приложения. Хорошую ссылку можно найти here (обратите внимание, что это приложение для Windows 8, но это та же концепция в UWP).

if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 
{ 
    //TODO: Load state from previously suspended application 
} 

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

public App() 
{ 
    this.UnhandledException += (s, e) => { }; 

Надеются, что это помогает и удаче!

+1

благодарит за сообщение. я только что нашел решение, перейдя через код и отлаживая его в своей голове (см. опубликованный ответ) –

+0

Рад, что вы это поняли. Но подумали ли вы о том, почему это нормально, когда его первый загруженный n затем разбился после его прекращения? –

+0

Я решил дать вам щедрость, даже если вы действительно не решили вопрос, но это невозможно было сделать без публикации всего исходного кода. благодаря! –

1

Является ли это приложение для магазина Windows8.1 перенастроено на Windows 10?

  1. Вы можете использовать средство просмотра событий, чтобы проверить информацию об авариях приложений или любом другом системном журнале событий. Просто найдите средство просмотра событий в W10.

  2. Создайте пакет приложений для магазина с помощью мастера. Поскольку Windows 10 позволяет загружать бонусные приложения, вы можете устанавливать и тестировать приложения, используя боковую загрузку. Режим разработчика также поддерживает загруженные приложениями. Вам просто нужно установить .appx со своим сертификатом для боковой загрузки. https://msdn.microsoft.com/en-us/library/windows/apps/dn706236.aspx

  3. Можете ли вы поделиться более подробными сведениями, которые вы получаете из регистрации? Каковы используемые возможности? Также предложите использовать телеметрию Application Insights для упрощения отчетов об ошибках/ошибках.

+0

, но пакет, который он создает, является.пакет appxupload. будет ли это также работать с загрузкой? я использовал средство просмотра событий, но ничего не появляется, когда приложение закрывается. Я смотрю под windows -> приложениями. –

6

Оказалось, что это вопрос времени. Код делал что-то плохое (тип, переводящий переменную в неправильный вид) в код резюме. Причина, по которой это не происходило в сборке отладки, заключалась в том, что медленнее было получить код резюме. К тому времени, как он попал в этот код, эта ошибка при выдаче такого типа не возникнет. Это произошло в сборке хранилища, но исключение незаконного литья не было получено HockeyApp или Windows Event Viewer каким-то образом.

Смежные вопросы