![a1fc7cea6060fc974d8a53cb4fcd236b.png](https://img-blog.csdnimg.cn/img_convert/a1fc7cea6060fc974d8a53cb4fcd236b.png)
1、原理概述
在 iOS 应用程序开发中,我们难免会碰到由于各种异常原因导致的崩溃情况。特别是对于像 Objective-C 这样的动态语言 来说,一旦代码出了异常,一般都会导致应用程序崩溃。在开发的过程中,如果出现了崩溃,我们都可以根据本地崩溃信 息快速定位、修改代码并修复。但对于线上版本发生的一些崩溃,我们只能通过收集崩溃信息来分析具体的原因。苹果也 提供了崩溃信息上报的功能,但并不是所有的 iPhone 用户都开启了该功能。因此,对于数据采集 SDK 来说,采集崩溃信 息并上报也是必不可少的一项功能。
采集应用程序的崩溃信息,主要分为以下两种场景:
- NSException 异常
- Unix 信号异常
下面,我们分别详细介绍如何实现采集崩溃信息的全埋点。
(1) NSException 异常
NSException 异常是 Objective-C 代码抛出的异常。在 iOS 应用程序中,最常见的就是通过 @throw 抛出的异常,比如常 见的数组越界访问异常:
@throw [NSException exceptionWithName:@"NSRangeException" reason:@"index 2 beyo