сбой - с чего начать? - PullRequest
       0

сбой - с чего начать?

0 голосов
/ 25 октября 2011

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

При сбое нет сообщения о том, что сообщалосьв консоли.

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

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

IСейчас я использую последнюю версию XCode (4.2)

Заранее спасибо ...

Ответы [ 3 ]

2 голосов
/ 25 октября 2011

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

0 голосов
/ 25 октября 2011

Сначала расслабься.

Затем прочтите это Техническое примечание .Теперь выполните следующие действия:

  1. Из /Users/<username>/Library/Developer/Xcode/DerivedData удалите все папки.
  2. Из /Users/<username>/Library/Application Support/iPhone Simulator удалите все папки.
  3. Очистите корзину.
  4. Удалите приложение с устройства.
  5. Создайте и запустите приложение на устройстве.
  6. Выполните действия, которые приведут к сбою.

Теперь перейдите на XCode->Window->Organizer и выберите "Device Logs" ваше устройство на панели DEVICES.Выберите самый последний из них с названием вашего приложения.Подождите, пока XCode символизирует журнал аварий .Теперь есть две возможности:

  1. Это аварийное завершение памяти.
  2. Это аварийное управление, связанное с управлением памятью.

Если вариант один, профилируйте свойприменение в инструментах.

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

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

PS: в первом разделе мы делаем первые два шага, чтобы убедиться, что нет никаких оставшихся .app / .dSYM файлов, которые могли бы помешать символизации позже в процессе, потому что символика XCode не настолько интеллектуальна.

0 голосов
/ 25 октября 2011

Может быть, значение NSZombiesEnabled в ДА в Project -> Edit Active Executable -> Arguments -> Variables также помогает; это покажет вам ошибки доступа к памяти в зависимости от доступа к освобожденным объектам. Но в этом случае вы должны как минимум получить ошибку SIG_ABRT или BAD_ACCESS ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...