iOS实现Crash捕获与堆栈符号化
在应用程序开发过程中,最棘手的问题莫过于crash。已经上线的crash无法看到崩溃现场,只能通过crash日志进行定位分析。通常情况下,可以使用苹果自带的crash log或者第三方的crash组件进行crash捕获。但是在一些场景下,需要我们手动实现crash捕获与符号化,比如开发SDK。 iOS端的crash分为两类,一类是NSException异常,另外一类是Signal信号异常。这两类异常我们都可以通过注册相关函数来捕获,但是值得注意的是一个应用中如果注册了多个crash收集组件,必然会存在冲突问题。这个时候,我们需要在注册之前判断是否已经注册过handler,如果有注册过,需要把之前注册的handler函数指针保存,待处理完crash后,再把对应的handler抛出去。
8/30/2018
code iOS