2011-11-09 3 views
3

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

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

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

ответ

2

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

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

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

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

Удачи!

+0

Спасибо, решена моя проблема – SamChen

3

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

ss

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

ss2

+0

Спасибо - Я установил значения в No, но у меня не было аварийных логов для моего сбоя, что XCode не распознает как сбой. – RanLearns

0

Я была такая же проблема, приложение разбился без какого-либо журнала или ошибка error.My была связана с «objc_msgSend».

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

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

Чтобы проследить это использование ошибок "NSZombieEnabled переменную окружения"

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

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

*** -[WSAddressViewController respondsToSelector:]: message sent to deallocated instance 0x1683d1b0 
0

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

Screenshot of breakpoint

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

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