下面就介绍如何在iOS中实现:
1. 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作
代码如下:
NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);
官方文档介绍:Sets the top-level error-handling function where you can perform last-minute logging before the program terminates.
UncaughtExceptionHandler是一个函数指针,该函数需要我们实现,可以取自己想要的名字。当程序发生异常崩溃时,该函数会得到调用,这跟C,C++中的回调函数的概念是一样的。
2. 实现自己的处理函数
代码如下:
void UncaughtExceptionHandler(NSException *exception) {
NSArray *arr = [exception callStackSymbols];//得到当前调用栈信息
NSString *reason = [exception reason];//非常重要,就是崩溃的原因
NSString *name = [exception name];//异常类型
NSLog(@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr);
}
以上代码很简单,但是带来的作用是非常大的。
首先看一下崩溃信息
可以利用全局断点来找出bug的具体位置
然后利用注释的方法找出哪一行代码出错了
最后改正错误,并清除一下,然后运行程序
缓存不足 如果是老机子可能跑不动新系统了,建议转出存储文件,或者降级。换手机也不错
用exception break point看一下挂在哪里。我猜八成是你的某个array里面塞了一个数字进去,取出来的时候对数字做了.length操作。