• 异常
  • 崩溃
  • ANR
  • 错误
  • 发生次数
  • 设备的唯一标识(Device ID)
  • 问题上报
  • 联网
  • 联网设备
  • 影响设备
  • 设备异常率
  • 次数异常率
  • 启动次数
  • 今日设备异常率
  • 首次上报时间
  • 问题累积影响设备
  • 问题累积影响次数
  • 小时/累计
  • 真机/模拟器
  • 数据更新时间
  • 问题ID
  • 上报ID
  • 崩溃时访问地址
  • 客户端侧上报ID
  • 二次上报
  • 符号表
  • 搜索维度

常用术语


异常

App在运行过程中发生的崩溃、ANR、错误,统称为异常。

崩溃

用户在使用App过程中发生一次闪退,计为一次崩溃。

ANR

用户在使用App过程中出现弹框,提示应用无响应,计为一次ANR,ANR仅用于Android平台应用。

错误

主动上报的Exception、Error,或脚本(如C#、Lua、JS等)错误,统称为错误。

发生次数

一个异常发生且被记录上报,计为一次异常发生。

设备的唯一标识(Device ID)

用于唯一标识一个设备的标记,由sdk自己默认生成,并在应用卸载前一直保持不变和有效。

CrashSight使用Device ID来识别设备,即,如果有X条问题上报的Device ID相同,那么这X条上报会使问题发生次数+X,但是影响设备数+1。联网和问题上报都会带有Device ID信息,以下是一些常用平台上CrashSight SDK生成Device ID的默认方式。

平台默认的Device ID生成方式
Android首次启动时生成UUID
iOSIDFV
WindowsMAC地址

问题上报

当触发CrashSight SDK的问题上报机制(对于崩溃是自动捕获,对于错误是调用接口,详情可参考CrashSight帮助文档),CrashSight会自动收集信息并进行上报。

联网

CrashSight SDK初始化时,将会立即进行一次上报,它被称作联网。联网产生的数据可以用于统计启动次数。

联网设备

以设备为判断指标,每一个发生联网的设备或者发生一次上报,即为一个联网设备。 在指定时间范围内,若一个设备重复发生联网行为,只算一个联网设备。(设备去重以设备的唯一标识为准)

影响设备

一台设备发生异常,计为一个影响设备。 在指定时间范围内,若一个设备发生多次异常,只算一个影响设备,(设备去重以设备的唯一标识为准)

设备异常率

诸如设备崩溃率、设备卡顿率、设备ANR率、设备错误率等 即影响设备/联网设备 比值。

次数异常率

诸如次数崩溃率、次数卡顿率、次数ANR率、次数错误率 即发生次数/联网次数的比值。

启动次数

应用完全退出后重新启动,计为一次启动(总启动次数具体是启动上报+异常上报中携带启动次数来累计,具体由sdk来进行启动判定)。

今日设备异常率

当日时间内的 异常影响设备/联网设备。

首次上报时间

问题第一次上报系统的时间。

问题累积影响设备

问题第一次上报系统之后,截止当前时间,一共影响设备的总数。

问题累积影响次数

问题第一次上报系统之后,截止当前时间,发生总次数。

小时/累计

小时窗口是,对应当前小时的00分00秒 到 当前小时 59分59秒之间。 累计窗口是,对应当天00时00分00秒 到 当前小时 59分59秒之间。

真机/模拟器

真机:真实的移动物理设备。 模拟器:能在个人计算机运行并模拟安卓手机系统的模拟器(大多数模拟器,每次启动app会产生新的设备唯一标识,同时云游戏设备也有这样的特点,也会标记为模拟器)。

数据更新时间

统计结果数据后台刷新的时间(数据更新是后台异步更新,默认崩溃趋势间隔10分钟左右更新一次)。

问题ID

异常在上报后会进行归类(同一类异常归为一个集合,称为一个问题),对应问题的唯一的UUID叫做问题ID,同问题一一对应。

上报ID

一个异常在上报的时候,产生一个唯一uuid叫做上报ID,同该次上报一一对应。

崩溃时访问地址

当发生坏内存访问时,程序实际访问的地址会和预期不符,CrashSight能上报崩溃时程序访问的地址。一般来说,崩溃时访问0x0为空指针,而崩溃时访问大地址则是野指针。

客户端侧上报ID

CrashSight SDK会在处理崩溃/错误时生成一个随机的UUID,并随崩溃/错误一同上报,这个UUID被称为客户端侧上报ID。客户端侧上报ID是每条上报的唯一标识,可以用来查找和定位上报信息。开发者可以在客户端的日志中搜索“expuid”来找到客户端侧上报ID。

二次上报

当崩溃发生时,CrashSight会尝试立即将错误信息上报到后台,但是因为种种不可抗因素(例如用户强杀程序,网络错误等),崩溃信息的处理和上报可能无法立即完成。在下次启动时,CrashSight会检查上次是否有未上报的崩溃信息,如果有,则会进行上报,这一过程被称为二次上报。值得注意的是,由于上次崩溃信息处理的过程可能没有完整进行,二次上报的崩溃信息有时会有所缺失。

符号表

CrashSight需要符号表才能对堆栈进行还原,上传符号表请参考符号表使用处理相关说明
为了保证数据安全,CrashSight不会要求您直接上传原始符号表文件(so、dsym、pdb等),而是使用我们的符号表工具提取出stif文件再进行上传。

每个符号表拥有一个唯一的UUID,如果上传的符号表UUID与之前的一样,CrashSight认为这份符号表是重复的,将会使用新的符号表替代旧的(换言之,如果您上传了错误的符号表,您可以利用这个机制来修正错误)。在还原堆栈时,CrashSight会优先使用UUID匹配符号表,如果匹配失败,则会使用版本号+库名来查找符号表。

上传Android符号表时,请务必保证您的so文件带有调试信息。您可以通过stif文件的大小来简单判断,如果生成的stif文件很小(<=1kb),则可能是您使用了不带调试信息的so来制作符号表,这样的符号表并不能成功还原堆栈。获取带调试信息的so的方法可参考各平台符号表文件格式,及在unity、unreal引擎中的生成方法

搜索维度

CrashSight页面中提供了丰富的问题筛选功能,以下是可选搜索维度的含义。

搜索维度含义搜索维度含义
问题最后上报时间问题最近一次上报的时间问题首次上报时间问题初次上报的时间
问题首次上报版本问题初次上报时的版本号异常类型CrashSight对异常上报的分类,如Native崩溃、C#错误等
异常大类崩溃、ANR或错误问题标签可以在“问题列表”页设置的自定义标签
问题处理状态问题处理状态,可在“问题列表”页配置是否关联缺陷单是否关联缺陷单,可在“问题列表”页配置
问题处理人问题处理人,可在“问题列表”页配置版本CrashSight SDK提取到的版本号,可通过接口设置
上报时间问题上报时间发生时间问题发生时间
应用包名/Bundle IDAndroid的包名,或iOS的Bundle ID应用分发渠道应用分发渠道,可通过接口设置
问题ID问题列表中展示的问题ID,一类问题拥有同一个问题ID上报ID服务端生成的上报ID,每一次上报都有唯一的上报ID
客户端侧上报ID客户端上报时生成的上报ID,可以在日志中搜索“expuid”查看,也可在上报详情中查看用户ID用于标识用户,可通过接口设置,默认为“unknown”
设备ID用于标识设备,详见Device ID异常名异常名
异常消息异常消息设备原始Model从系统接口提取到的机型
应用位数32位或64位系统版本系统版本
出错进程名出错进程名出错线程名出错线程名
运行时长运行时长是否模拟器是否模拟器
是否系统退出CrashSight后台匹配到系统退出特征ROM系统固件名称(仅Android)
自定义关键字用户自定义的关键字,详见自定义数据出错堆栈出错线程的堆栈
出错堆栈(还原前)还原前的原始堆栈
Last Updated: