Повторное выбрасывание NSException с неправильным стеком в отладчике

StackOverflow https://stackoverflow.com/questions/8967636

  •  12-11-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение 2

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top