Как узнать, какое исключение было сгенерировано в отладчике Xcode (для iPhone)? - PullRequest
29 голосов
/ 21 декабря 2008

Я изучаю программирование для iPhone из книги Эрика Садуна «Поваренная книга разработчика iPhone». Когда я запускаю созданное мной приложение, следуя инструкциям примера преобразования температуры, начиная со стр. 81 в симуляторе, оно закрывается из-за необработанного исключения. (См. http://groups.google.com/group/iphonesdk/browse_frm/thread/6f44a90fdb8da28a?hl=en для вопроса, который я отправил в группу Google iPhoneSDK.)

Исключение выдается после вызова UIApplicationMain () из моего main (). Если я просматриваю трассировку стека в отладчике, все, что я вижу, это (конечно) сборка. Как мне узнать, какое исключение было выброшено?

Обновление
Изучения деталей исключения из консоли отладчика было достаточно, чтобы помочь мне решить проблему. (См. http://groups.google.com/group/iphonesdk/browse_frm/thread/6f44a90fdb8da28a?hl=en.) Я подтвердил, что могу установить символическую точку останова на objc_exception_throw, но я не смотрел, было ли обратное отслеживание оттуда полезным.

Ответы [ 4 ]

52 голосов
/ 21 декабря 2008

Установите точку останова на objc_exception_throw и запустите ваше приложение через Debug вместо Run

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

14 голосов
/ 29 сентября 2012

В новом Xcode (по крайней мере начиная с v4.5) вы можете легко перехватить все исключения, выполнив следующее:

  1. Вызов навигатора точек останова (⌘6)
  2. Нажмите + в левом нижнем углу
  3. Добавить точку останова исключения

Я думаю, что выше то же самое, что и точка останова на objc_exception_throw. http://samwize.com/2012/09/26/xcode-4-dot-5-tips-and-tricks/

6 голосов
/ 14 февраля 2013

http://ijoshsmith.com/2011/11/28/debugging-exceptions-in-xcode-4-2/

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

3 голосов
/ 04 февраля 2012

Как ответил Кевин, вы найдете более полезную информацию об отладке, установив точку останова на objc_exception_throw.

Если вы используете Xcode 4.2, вы можете добавить эту символическую точку останова, перейдя в Навигатор точек останова> Нажмите значок добавления в левом нижнем углу> Добавить символическую точку останова> Введите objc_exception_throw для Символа> Готово.

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