J'aimerais enregistrer la trace des appels à certains moments, comme les assertions ayant échoué ou les exceptions non capturées.
objective-c
cocoa
robottobor
la source
la source
backtrace
etbacktrace_symbols
; voir la page de manuel backtrace (3).backtrace/backtrace_symbols
directementla réponse de n13 n'a pas tout à fait fonctionné - je l'ai légèrement modifiée pour arriver à cette
la source
NSLog(@"[Error] - %@ %@", exception.name, exception.reason);
si vous voulez aussi l'exception réelleCocoa enregistre déjà la trace de la pile sur les exceptions non capturées de la console, bien qu'il ne s'agisse que d'adresses de mémoire brute. Si vous voulez des informations symboliques dans la console, il y a un exemple de code d'Apple.
Si vous souhaitez générer une trace de pile à un point arbitraire de votre code (et que vous êtes sur Leopard), consultez la page de manuel de backtrace. Avant Leopard, vous deviez réellement fouiller dans la pile d'appels elle-même.
la source
Cela vous dit à peu près quoi faire.
Essentiellement, vous devez configurer la gestion des exceptions des applications pour vous connecter, quelque chose comme:
la source
Pour les exceptions, vous pouvez utiliser le membre NSStackTraceKey du dictionnaire userInfo de l'exception pour ce faire. Voir Contrôle de la réponse d'un programme aux exceptions sur le site Web d'Apple.
la source
En impression rapide de cette façon:
la source