как отлаживать приложение в windows phone 7, которое не запускается из визуальных студий

В настоящее время я работаю над обработкой захоронения для своего приложения. чтобы надгробить мое приложение, я перехожу на 2 страницы в свое приложение (с первой страницы). Затем я нажимаю кнопку «Домой», затем я нажимаю кнопку «Назад», чтобы вернуться в свое приложение. после нажатия кнопки «Назад» все, что я вижу, это страница с надписью «возобновление» с индикатором выполнения. это только кажется, что останавливается.

теперь, когда я запускаю приложение, я запускаю его из визуальной студии на свое устройство. но как только я нажимаю кнопку «Домой» на устройстве, отладчик в Visual Studio закрывается. поэтому, когда я нажимаю кнопку «Назад», чтобы перейти к моему приложению, у меня больше нет возможности отлаживать его из Visual Studio.

есть ли параметр, который мне нужно установить, чтобы нажатие кнопки «Домой» не останавливало отладку?

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

Есть ли процесс, связанный с устройством, к которому я могу подключить отладчик в Visual Studio для отладки? или мне всегда нужно запускать приложение из Visual Studio для отладки?

пример кода того, как я справляюсь с надгробиями, выглядит следующим образом.

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
 if(NavigationMode.Back != e.NavigationMode)
 {
  try 
  {
   PhoneApplicationService.Current.State["token"] = myMvvM;
  } 
  catch(Exception ex) 
  { 
   Debug.WriteLine(ex.ToString()); 
  }
 }
}

прямо сейчас я ничего не делаю с Application_UnhandledException в App.xaml.cs. код остается сгенерированным (я только Debug.WriteLine для просмотра журнала).

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
 //break point is placed on line right below this comment line
 Debug.WriteLine("unhandled exception sender type = " + 
  sender.GetType().FullName + ", ex = " + e.ToString());

 if (System.Diagnostics.Debugger.IsAttached)
 {
  // An unhandled exception has occurred; break into the debugger
  System.Diagnostics.Debugger.Break();
 }
}

person jake    schedule 26.07.2011    source источник


Ответы (1)


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

Но похоже, что ваша логика захоронения выдает исключение, а вы его не перехватываете. Реализовали ли вы обработчик события Application.UnhandledException? (Шаблоны App.xaml.cs по умолчанию для Visual Studio реализуют это)

person Claus Jørgensen    schedule 26.07.2011
comment
я вижу эту строку, где if заставляет отладчик сломаться. я прокомментировал эту строку. я также добавил оператор Debug.WriteLine для регистрации аргументов (отправитель объекта, ApplicationUnhandledExceptionEventArgs e). странно то, что когда я раскомментирую эту строку, у меня больше не возникает проблемы, которую я наблюдал выше. я думаю, что эта проблема прерывистая и будет трудно воспроизвести. - person jake; 26.07.2011
comment
Стандартная реализация выглядит так: вы используете Debug.Break для прерывания, чтобы вы могли проанализировать ApplicationUnhandledExceptionEventArgs, содержащий исключение, вызвавшее ошибку. bitbucket.org/Windcape/goto- con/src/a5c9be4219b6/GotoCon/ - person Claus Jørgensen; 26.07.2011
comment
Вы не справляетесь с этим, именно поэтому вы не получаете отладочную информацию. И это также доказывает, что ваш код захоронения дает сбой, скорее всего, из-за ошибки сериализации. - person Claus Jørgensen; 26.07.2011
comment
пожалуйста, смотрите код выше. я окружаю строку, где я сохраняю состояние в блоке try/catch. разве я не должен увидеть там какой-то вывод, если сериализация не удалась? - person jake; 26.07.2011
comment
Вы проверили с помощью отладчика, что указанный код вообще выполняется? (Отладчик по-прежнему должен быть подключен к событию OnNavigatedFrom, iirc) - person Claus Jørgensen; 26.07.2011
comment
Тогда используйте отладчик! Установить точки останова в Visual Studio проще. (Подсказка: Debug.WriteLine также не будет работать, если отладчик не подключен) - person Claus Jørgensen; 26.07.2011
comment
я говорю, что когда он ломается (независимо от того, какое исключение выбрасывается), то же самое происходит и с приложением отладчика из приложения. я поместил точку останова внутри Application_UnhandledException, и я никогда не попадал в эту точку останова. я также поставил Debug.WriteLine и не вижу этих выходных данных. - person jake; 26.07.2011