Приложение вылетает на устройстве, но XCode не регистрирует сбой - PullRequest
4 голосов
/ 09 ноября 2011

У меня подключено устройство, и я запускаю приложение через XCode.В определенный момент приложение вылетает на устройстве и выходит на домашний экран.Тем не менее, Xcode по-прежнему показывает приложение как «Работает», и у меня есть возможность нажать «Стоп» - оно не отображается серым цветом.На консоль не выводится сообщение об ошибке, и в журнал устройства не сохраняется журнал сбоев.

Мне нужно исправить сбои, но без сообщения об ошибках мне трудно отследить проблему.Я поместил NSLog операторы в ключевые области кода, но не приблизился к выяснению причины сбоя.

Кто-нибудь знает что-нибудь о странном факте, что XCode не знаетчто мое приложение упало и по-прежнему показывает приложение как «Запущенное»?

Ответы [ 4 ]

4 голосов
/ 09 ноября 2011

Чтобы помочь с отладочной частью вашего вопроса, вы можете установить «Strip Debug Symbols» на «No» в настройках сборки:

ss

и тогда вы сможете увидеть символический журнал сбоев в разделе «Журналы устройств» окна Организатора:

ss2

3 голосов
/ 09 ноября 2011

Если приложение подписано для распространения, X-Code не сможет его отладить.Запуск приложения на устройстве приводит к тому, что X-Code не может получить идентификатор процесса.

Вы все еще можете получать сообщения журнала (и другие сообщения консоли, возможно, включая информацию о сбое) через органайзер -> устройства-> console.

Если ваше приложение подписано для разработки, и это все еще проблема, у вас есть более серьезная проблема, которая заставляет X-Code думать, что ваше приложение не может запуститься.Посмотрите, сколько времени занимает инициализация вашего приложения;У меня были проблемы, когда время загрузки> 10 секунд не давало X-Code не получать идентификатор процесса, но приложение все еще работало.

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

Желаем удачи!

1 голос
/ 07 октября 2016

Вы случайно установили точку останова на линии?

Screenshot of breakpoint

Отключить или удалить точку останова.

1 голос
/ 12 января 2016

У меня была такая же проблема, приложение не работало без журнала или ошибки. Моя ошибка была связана с "objc_msgSend".

Чтобы выяснить вашу ошибку - выберите «Показать отладочный навигатор» в окне Xcode Navigator (окно слева). Мое приложение показывает "objc_msgSend" в теме 1 в первой строке.

Итак, я запустил Google по поводу "objc_msgSend" и обнаружил, что этот сбой происходит из-за ошибки памяти. это означает, что сообщение было отправлено получателю, который уже был освобожден.

Чтобы отследить эту ошибку, используйте «переменную среды NSZombieEnabled»

  1. В Xcode, нажмите на Product -> Scheme -> Edit схема.
  2. Из конфигурации «Запустить схему» перейдите на вкладку «Диагностика».
  3. В разделе «Управление памятью» установите флажок «Включить объекты-зомби».

Теперь, запустите ваше приложение и восстановите сбой, на этот раз вы найдете отчет о сбое на консоли.

*** -[WSAddressViewController respondsToSelector:]: message sent to deallocated instance 0x1683d1b0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...