iOS小技巧14- 调试bug技巧-打印XCode的 Stack Trace信息
有时候调试程序会崩溃,但是并不会崩溃到出问题的地方。
int main(int argc, char *argv[])
{
@autoreleasepool {
// 异常停在了这里-并不能看出问题
return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyClass class]));
}
}
怎么样才能让崩溃信息可读呢,快速确定崩溃的地方呢?
首先在AppDelegate中定义一个方法, 用于处理异常:
void uncaughtExceptionHandler(NSException *exception) {
NSLog(@"CRASH: %@", exception);
NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
// Internal error reporting
}
然后在应用启动时,设置这个方法作为自己的自定义异常回调:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
// Normal launch stuff
}
定义了这个回调之后,Log信息变成出错行一目了然,进而可以跳到出错行分析原因,很容易就把bug修复了。