Ich möchte die Anrufverfolgung an bestimmten Punkten protokollieren, z. B. bei fehlgeschlagenen Zusicherungen oder nicht erfassten Ausnahmen.
objective-c
cocoa
Robottobor
quelle
quelle
backtrace
undbacktrace_symbols
; Siehe die Manpage backtrace (3).backtrace/backtrace_symbols
direkt verwendenDie Antwort von n13 hat nicht ganz funktioniert - ich habe sie leicht modifiziert, um dies zu erreichen
quelle
NSLog(@"[Error] - %@ %@", exception.name, exception.reason);
wenn Sie die tatsächliche Ausnahme auch möchtenCocoa protokolliert den Stack-Trace bereits bei nicht erfassten Ausnahmen in der Konsole, obwohl es sich nur um Rohspeicheradressen handelt. Wenn Sie symbolische Informationen in der Konsole wünschen, gibt es einen Beispielcode von Apple.
Wenn Sie an einer beliebigen Stelle in Ihrem Code eine Stapelverfolgung generieren möchten (und sich auf Leopard befinden), lesen Sie die Manpage zur Rückverfolgung. Vor Leopard mussten Sie tatsächlich den Call-Stack selbst durchsuchen.
quelle
Dies sagt Ihnen ziemlich genau, was zu tun ist.
Im Wesentlichen müssen Sie die Ausnahmebehandlung für Anwendungen für die Protokollierung einrichten.
quelle
Für Ausnahmen können Sie dazu das NSStackTraceKey-Mitglied des userInfo-Wörterbuchs der Ausnahme verwenden. Siehe Steuern der Reaktion eines Programms auf Ausnahmen auf der Apple-Website.
quelle
Im schnellen Druck folgendermaßen:
quelle