Я хотел бы регистрировать трассировку вызовов во время определенных моментов, таких как ошибочные утверждения или неперехваченные исключения.
objective-c
cocoa
robottobor
источник
источник
backtrace
иbacktrace_symbols
функцию; см. справочную страницу backtrace (3).backtrace/backtrace_symbols
напрямуюОтвет n13 не совсем сработал - я немного изменил его, чтобы придумать
источник
NSLog(@"[Error] - %@ %@", exception.name, exception.reason);
если вы хотите, чтобы фактическое исключение тожеКакао уже регистрирует трассировку стека на необработанных исключениях в консоли, хотя они являются просто необработанными адресами памяти. Если вам нужна символическая информация в консоли, то есть пример кода от Apple.
Если вы хотите сгенерировать трассировку стека в произвольной точке вашего кода (и вы находитесь на Leopard), обратитесь к странице справки backtrace. До Leopard вам действительно приходилось копаться в самом стеке вызовов.
источник
Это в значительной степени говорит вам, что делать.
По сути, вам нужно настроить обработку исключений приложений для регистрации, что-то вроде:
источник
Для исключений вы можете использовать для этого член NSStackTraceKey из словаря userInfo исключения. См. Контроль ответа программы на исключения на веб-сайте Apple.
источник
Быстрая печать следующим образом:
источник