Приложение работает нормально из Xcode, но вылетает при загрузке с домашнего экрана - PullRequest
2 голосов
/ 14 августа 2011

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

Запуск сборки и анализа не показывает утечек памяти или предупреждений. (Хотя я не исключаю это как ложное чувство безопасности.)

В соответствующем журнале устройств отображается:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0439e000

Что заставляет меня думать, что это проблема выпуска / сохранения, но почему она не появилась в Build / Analyze? И почему он работает нормально при запуске из Xcode?

EDIT

Следует также отметить, что приложение " запускается " прекрасно работает в симуляторе как из Xcode, так и из запуска с домашнего экрана. Я говорю « работает », потому что он использует камеру, поэтому работа на симуляторе не так уж полезна в этом случае.


UPDATE

Спасибо всем. Все ресурсы, кажется, правильно названы. Я пытаюсь заставить команду atos работать правильно. Я продолжаю получать один и тот же адрес вместо имени файла класса и номера строки.

Ответы [ 2 ]

0 голосов
/ 15 августа 2011

Забудь атос.Я понял список журналов устройств, в каком потоке, файле и номере строки произошел сбой.Это последовательно в моем методе captureOutput делегата AVCaptureSession.

Я получал значения CVPixelBufferGetBaseAddress примерно в 200 раз выше при запуске "отключен".Я также обнаружил, что когда я запускал простой диагностический NSLog в одном из циклов, сбой прекращался (но он предотвращал вызов чего-либо в главном потоке, поэтому это не было постоянным исправлением).

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

byteIndex   += (bytesPerPixel * 2);

Понижение до следующего решило проблему полностью:

byteIndex   += (bytesPerPixel);
0 голосов
/ 14 августа 2011

Иногда (возможно, в вашем случае), когда приложение впервые запускается из XCode, оно создается и запускается как новый экземпляр приложения.Когда вы затем остановите его и попробуете запустить его с домашнего экрана, он может запуститься из фона.Если вы не управляли своей памятью должным образом для состояния, когда ваше приложение запускается из фона, анализатор не обнаружит проблемы с памятью.Чтобы выяснить, так ли это, попробуйте дважды щелкнуть кнопку «Домой» и выйти из приложения, если оно там появится.Затем запустите его снова с домашнего экрана.Вы также можете попробовать отладить его с помощью инструментов.

...