NSException перебрасывается с неправильным стеком в отладчике - PullRequest
0 голосов
/ 23 января 2012

Когда происходит сбой (по понятным причинам; это не проблема), когда я пытаюсь сделать что-то, с чем какао не в порядке, например, вызвать метод, который не существует, или попытаться вставить ноль в набор, Отладчик показывает стек от main () до __pthread_kill, без каких-либо фреймов, которые присутствовали при запуске фактического кода сбоя. Существует кадр (9-й от основного), который называется objc_exception_rethrow. Это наводит меня на мысль, что Cocoa Touch пытается что-то сделать, чтобы восстановить все исключения и умереть изящно или что-то в этом роде. Однако при отладке очень раздражает отсутствие возможности использовать инструменты отладки Xcode4 для исследования фреймов вызывающего стека или даже увидеть, где в моем коде произошел сбой.

Есть ли какой-нибудь способ, чтобы поведение objc_exception_rethrow не происходило, а просто сбой, как только возникает исключение? Возможно, есть параметр отладки, который делает его аварийным завершением раньше (во время вправо )? (Я еще ни разу не перепутал настройки сборки в этом проекте.)

Ответы [ 2 ]

0 голосов
/ 29 января 2012

Я нашел ответ: установить точку останова на исключениях Obj-C. Он попадет в отладчик при ударе objc_exception_throw, что хорошо. К сожалению, это происходит до того, как исключение напечатано, но мы можем сделать это в любом случае (большую часть времени), установив действие точки останова равным (Действие отладчика) po *(id *)($ebp + 8).

0 голосов
/ 24 января 2012

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

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