Chciałbym rejestrować ślad połączenia podczas niektórych punktów, takich jak nieudane stwierdzenia lub nieprzechwycone wyjątki.
objective-c
cocoa
robottobor
źródło
źródło
backtrace
ibacktrace_symbols
; patrz strona podręcznika śledzenia (3).backtrace/backtrace_symbols
bezpośrednioOdpowiedź n13 nie do końca działała - zmodyfikowałem ją nieco, aby to wymyślić
źródło
NSLog(@"[Error] - %@ %@", exception.name, exception.reason);
jeśli chcesz również faktyczny wyjątekKakao już rejestruje ślad stosu w przypadku niewyłapanych wyjątków od konsoli, chociaż są to tylko surowe adresy pamięci. Jeśli potrzebujesz informacji symbolicznych w konsoli, jest jakiś przykładowy kod od Apple.
Jeśli chcesz wygenerować ślad stosu w dowolnym punkcie swojego kodu (i jesteś w systemie Leopard), zobacz stronę podręcznika śledzenia. Przed Leopardem musiałeś przekopać sam stos wywołań.
źródło
To prawie mówi ci, co masz robić.
Zasadniczo musisz skonfigurować obsługę wyjątków aplikacji do rejestrowania, na przykład:
źródło
W przypadku wyjątków można do tego użyć elementu NSStackTraceKey ze słownika userInfo wyjątku. Zobacz Kontrolowanie reakcji programu na wyjątki w witrynie Apple.
źródło
W szybki druk w ten sposób:
źródło