Нахождение исключения в коде Objective c - PullRequest
1 голос
/ 23 мая 2009

Я отлаживаю свое приложение на iphone (OS 2.0), используя X-code 3.1 iphone SDK 3.0 beta 5. Мое приложение вылетает с сообщением * Завершение работы приложения из-за неперехваченного исключения 'NSRangeException', причина: '* - [NSCFArray insertObject: atIndex:]: index (8) за пределами (8)' 2009-05-23 17: 13: 32.304 myApp [405: 5a07] Стек: ( 808163835, 806099672, 807978623, 807978527, 812332907, 812067179, 812067103, 126035, 812081649, 812081343, 826526801 )

В GDB, когда я даю команды (GDB) информационная строка 126035 Номер строки 126035 находится вне диапазона для "/ Users / videomac / manish / EXPLab / 2009-05-18-12-27 myApp / main.m".

(gdb) информационная строка * 126035 Строка 527 «/ Users / videomac / manish / EXPLab / 2009-05-18-12-27 myApp / Classes / PlaybackThread / Playback.m» начинается по адресу 0x1ec52 <- [Playback startPlaybackThread:] + 514> и заканчивается в 0x1ec6a <- [Воспроизведение startPlaybackThread:] + 538>.

означает, что сбой происходит из-за кода в моем методе [Playback startPlaybackThread:] тогда что означает "нет +514" и "+538", означают ли они строку "нет"?

Есть ли другой способ определить причину сбоев?

Ответы [ 2 ]

3 голосов
/ 24 мая 2009

Самый простой способ узнать, где происходит ваше исключение - это установить точки останова - [NSException повышение] и objc_exception_throw в gdb. Тогда вы сломаете, как только это произойдет, и вы сможете проверить стек в этой точке.

1 голос
/ 23 мая 2009

О первой упомянутой вами ошибке из -insertObject: atIndex: документация:

Важно : Повышает NSRangeException если index больше, чем число элементы в массиве.

Я бы искал вызовы этого метода, пытаясь найти, какой из них вызывает ошибку.

Числа +514 и +538 дают смещение от кода инструкций непосредственно перед

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