废话不多说,直接看iOS APP奔溃的几种类型
1.Mach异常
Mach 是一个 XNU 的微内核核心,Mach 异常是指最底层的内核级异常,被定义在 下 。每个 thread,task,host 都有一个异常端口数组,Mach 的部分 API 暴露给了用户态,用户态的开发者可以直接通过 Mach API 设置 thread,task,host 的异常端口,来捕获 Mach 异常,抓取 Crash 事件。
2.Unix 信号
所有 Mach 异常都在 host 层被ux_exception转换为相应的 Unix 信号,并通过threadsignal将信号投递到出错的线程。iOS 中的 POSIX API 就是通过 Mach 之上的 BSD 层实现的。
3.C++ exceptions
这个比较简单,直接调用了标注库的std::set_terminate(CPPExceptionTerminate)函数,设置CPPExceptionTerminate为C++ exceptions 的异常处理函数。
4.Object C 异常
查找奔溃的位置:
1.集成腾讯-SDK,bugly
https://bugly.qq.com/
2.集成开源第三方库 KSCrash
https://github.com/kstenerud/KSCrash
KSCrash解析可以参考:
https://www.it610.com/article/1191455498289913856.htm
3.如果只有崩溃地址,怎么手动查找崩溃位置呢?
参考我的下一篇文章