iOS 捕获系统外异常
太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
有时应用崩溃,而日志中的输出信息太少。无法定位问题,这是最头疼的事情。尤其非常累的时侯。已经想不起来刚才改过什么了。这就叫做无耐。
工欲善其事。必先利其器,以下的方法能够给多些信息,让你看到堆栈运行顺序。在哪里崩溃的,也就能大概给个思路,确定问题的症结。
在 AppDelegate.m 类实现之前增加:
void UncaughtExceptionHandler(NSException *exception) { // 获取异常相关信息 NSArray *callStackSymbols = [exception callStackSymbols]; NSString *callStackSymbolStr = [callStackSymbols componentsJoinedByString:@"\n"]; NSString *reason = [exception reason]; NSString *name = [exception name]; // 获取系统当前时间 NSDate * date = [NSDate date]; NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init ]; [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH小时mm分ss秒"]; NSString * dateStr = [dateFormatter stringFromDate:date]; NSLog(@"系统当前时间为:%@ \n",dateStr); NSLog(@"异常名称:%@ \n",name); NSLog(@"异常原因:%@ \n",reason); NSLog(@"堆栈标志:%@ \n",callStackSymbolStr); }
在 AppDelegate.m 类实现的应用启动方法中增加例如以下语句,为系统设置异常回调函数为上面的声明,具体说明见
“iOS Foundation 框架概述文档:常量、数据类型、框架、函数、公布声明”
:
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5266854.html,如需转载请自行联系原作者