You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
合作与生态
支持与服务
开发者
了解我们
导航

崩溃防护

更新时间:2023.05.18 17:58:40

崩溃防护iOS提供异常崩溃的保护,可有效避免用户闪退,规避常规问题的大规模崩溃,增加App稳定性,提升用户体验。异常防护的集成对业务代码没有任何侵入性,能够有效的防止问题的发生,并将问题上报到平台,帮助您及时发现问题。
该功能中的统计数据为崩溃防护帮助应用拦截的异常,但后续仍需要对issue做处理和修复。

使用限制

仅iOS支持异常崩溃防护。

筛选条件

您可以通过以下筛选条件进行数据筛选。
图片
支持的筛选维度:
时间、崩溃详情、设备ID、issue新增状态、前后台、越狱状态、系统版本、机型、APP版本、APP小版本号、APM SDK版本、下载渠道、省份、使用时长、机型评分、解析情况、APP页面、issue状态、处理人、标签、自定义维度、PV自定义维度。

崩溃拦截趋势

图片
指标说明:

指标

说明

拦截崩溃次数

已成功拦截的崩溃的次数

拦截崩溃率

筛选条件下的拦截崩溃次数/筛选条件下的总launch数

拦截崩溃人数

筛选条件下的去重拦截崩溃人数

拦截崩溃用户比例

筛选条件下发生拦截崩溃错误的去重UV数/筛选条件下的去重总UV数

用户数

筛选条件下已拦截崩溃的去重UV数

崩溃拦截分布

图片
崩溃拦截分布展示了已拦截的异常崩溃在系统版本、机型、APP版本、APP小版本号等维度的分布。

拦截异常崩溃列表

图片
列表中展示了这类拦截异常崩溃的issue影响用户数、发生次数、最近发生时间和日志上报时间等信息。

  • 崩溃率:该类拦截异常崩溃的崩溃次数/总launch数。
  • 最新发生时间:最近一次拦截异常崩溃的时间
  • 日志上报时间:该拦截异常崩溃信息到服务端的时间
    例如,拦截异常崩溃的发生是在version 1.0版本,但是上报是在version 1.2版本,为了避免信息差,列表会把问题发生时和上报时所有的现场信息进行上报。

崩溃详情

issue概述

图片
详情崩溃趋势展示了该issue的崩溃数和影响用户数两个指标的变化趋势。详情拦截崩溃趋势图和列表拦截崩溃趋势不同:

  • 列表拦截崩溃趋势:时间范围内所有已拦截的异常崩溃。
    例如,7天为时间周期,1小时为聚合粒度,可以看到7天内每小时的拦截崩溃趋势,崩溃次数20。
  • 详情拦截崩溃趋势:时间范围内所有已拦截的异常崩溃的聚合。
    例如,7天为时间周期,1小时为聚合粒度,崩溃列表中有5个崩溃项,即系统将20次崩溃分类为5个崩溃项,打开其中一个崩溃项,详情拦截崩溃趋势是同一类崩溃项在7天内的崩溃趋势。

详细信息

图片
详细信息可以查询单次crash的各字段属性。单击设备标识ID或UserID旁的追查可跳转至日志查询以查询完整的上下文日志流。通过右上角,可切换crash。

原始堆栈&Retrace

图片

  • 原始堆栈展示的原始对战信息,即客户端上传的原始日志中的堆栈信息。
  • Retrace展示的是经过符号化之后的堆栈。
    • 系统堆栈会被处理。
    • 如果没有上传符号表,客户端堆栈不会被处理。
    • 如果已上传符号表,客户端堆栈仍未处理,可能是符号表未全部上传。
  • 如果符号表或解析有误,可以重新上传符号表,然后在Retrace的界面单击重试Retrace
  • 复制堆栈便于互相配合分析堆栈信息。

崩溃信息

图片
参数说明如下所示。

Key

Value

reason

根据现场情况分析给的结果

protect_type

防护崩溃的类型所在的子模块

符号表

图片
在符号表页面,手动上传符号表。

现场数据

图片
现场数据展示了发生崩溃防护时的程序运行状态。

自定义日志

图片
自定义日志支持回捞、上报自定义的日志内容,包括进程-线程信息、日志级别、日志详情内容,并支持检索筛选。

接入与配置

接入

Podfile中增加CrashProtector模块。详情请参见iOS接入

采样率

图片
在SDK上报配置中,支持修改崩溃防护采样率。

子模块

图片
在SDK上报配置中,支持修改崩溃防护子模块。
各个模块与值的对应关系,如下表所示。

子模块功能

下发值

含义

默认状态

关闭所有功能

0

USEL

1(1<<0)

Unrecognized Selector防护

Container

2(1<<1)

容器防护

Notification

4(1<<2)

通知中心防护

KVO

8(1<<3)

KVO防护

KVC

16(1<<4)

KVC防护

NSUserefaults

32(1<<5)

NSUserDefaults防护

开启所有功能

63(0b 0011 1111)

值计算公式为:finalValue = 开启功能1的下发值

开启功能2的下发值

...

开启功能n的下发值。

例如:

  • 用户开启所有功能,finalValue为63
  • 用户关闭所有功能,finalValue为0
  • 用户只关闭容器防护,finalValue为61,计算为 1<<0 | 1<<2 | 1<<3 | 1<<4 | 1<<5

数组防护逻辑规则

图片
在SDK上报配置中,支持修改数组创建防护逻辑规则。
在数据创建时,如果传入对象有nil时,系统会产生崩溃。崩溃防护接入后系统不会产生崩溃,但默认情况下,返回的数组为nil。

模式

平台字段

默认状态

严格模式

优先保证数组索引的正确性。创建数组时,若传入的值包含空值,则创建的数组为空。

NSString *strValue = nil;
NSArray *arr = @[strValue, @"str1"];
// arr的结果为nil

兼容模式

优先保证数组创建成功。创建数组时,若传入的值包含空值,则剔除其中的空值,并创建数组。

NSString *strValue = nil;
NSArray *arr = @[strValue, @"str1"];
// arr的结果为@[@"str1"]

崩溃防护类型

类型

说明

USEL

unrecognized selector,防护因调用未实现方法造成的崩溃。

Container

防护Foundation基础类型(NSString、NSMutableString、NSAttributedString、NSMutableAttributedString、NSArray、NSMutableArray、NSDictionary、NSMutableDictionary)的常用方法,可以防护由于传参不当(比如:数组越界、参数为空等)导致的崩溃。

Notification

通知中心防护。

KVC

利用运行时获取和设置参数的一种方式,使用中若操作的对象不存在对应的key则会造成崩溃,KVC防护就是针对该类型的防护。

KVO

系统提供的监听某一对象属相变化的功能,但在使用中可能存在诸多隐藏问题,KVO防护就是针对该类型的防护。

NSUserefaults

对NSUserefaults进行防护,防止因写入非标准类型造成的崩溃。