Jak wydrukować ślad stosu do konsoli / logowania?
Chciałbym zarejestrować ślad wywołania w pewnych punktach, takich jak nieudane twierdzenia lub nieobciążone wyjątki.
5 answers
NSLog(@"%@",[NSThread callStackSymbols]);
Ten kod działa na każdym wątku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-28 20:58:13
ODPOWIEDŹ N13 nie zadziałała-zmodyfikowałem ją nieco, aby wymyślić to
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
int retval;
@try{
retval = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
@catch (NSException *exception)
{
NSLog(@"Gosh!!! %@", [exception callStackSymbols]);
@throw;
}
return retval;
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-09 05:13:31
Cocoa zapisuje już ślady stosu na nieobciążonych wyjątkach konsoli, chociaż są to tylko surowe adresy pamięci. Jeśli potrzebujesz symbolicznych informacji w konsoli, znajdziesz przykładowy kod od Apple.
Jeśli chcesz wygenerować ślad stosu w dowolnym punkcie kodu (i jesteś na Leopardzie), zobacz stronę podręcznika backtrace. Przed Leopardem trzeba było przekopać się przez sam stos połączeń.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-20 22:58:59
Zasadniczo musisz skonfigurować obsługę wyjątków aplikacji do logowania, coś w stylu:
#import <ExceptionHandling/NSExceptionHandler.h>
[[NSExceptionHandler defaultExceptionHandler]
setExceptionHandlingMask: NSLogUncaughtExceptionMask |
NSLogUncaughtSystemExceptionMask |
NSLogUncaughtRuntimeErrorMask]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-27 14:00:03
W przypadku WYJĄTKÓW, możesz użyć członka nsstacktracekey w słowniku UserInfo wyjątku. Zobacz kontrolowanie odpowiedzi programu na wyjątki na stronie internetowej Apple.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-20 22:44:29