一、crash率
1、计算公式
- 日crash率 = 每日上报crash设备数 / 每日联网设备数
- crash率 = 统计周期内每日crash率的平均值
- 统计周期:默认BSC统计周期默认是按月统计
2、过滤规则
-
有效上报crash设备 = 上报crash设备 - 日活低于1%非测试版本上报设备数
-
有效联网设备 = 联网设备总数 - 日活低于1%的非测试版本联网上报设备数
-
当天crash率 = 有效上报crash设备数/有效联网设备数
-
月度crash率 = 当月每天crash率累计/当月天数
3、常见的crash异常
- NullPointerException 空指针
- ClassCastException 类型转换异常
- IndexOutOfBoundsException 下标越界异常
- ActivityNotFoundException Activity未找到异常
- IllegalStateException 非法状态异常
- ArrayIndexOutOfBoundsException 数组越界异常
- SecurityException 安全异常
二、有堆栈的crash分析七式
- 根据“fatal”关键字附近的异常堆栈来分析,找不到转下一步
- 根据“uncaught”关键字附近的异常堆栈来分析,找不到转下一步
- 根据 “#00 pc” 关键字附近的异常堆栈来分析,找不到转下一步
- 根据”.so”关键字附近的异常堆栈来分析,找不到转下一步
- 根据”crash”关键字附近的异常堆栈来分析,找不到转下一步
- 根据”die”关键字附近的异常堆栈来分析,找不到转下一步(这一步里,有时候可能是进程被kill或者自己调用killProcess()自杀,这种情况是没有堆栈的)
- 根据”anr”关键字附近的异常堆栈来分析
三、crash一般需要打印的东西
四、Win程序崩溃时如何产生crash dump 文件
1、引言
dump文件是C++程序发生异常时,保存当时的程序的运行状态的文件,是调试异常程序的重要方法。所以,除了日志文件,dump文件便成了我们查找错误的最后一根救命稻草。
不同于Linux环境,Windows环境下,需编写代码产生dump文件
2、原理
Windows程序遇到异常,没有try-catch或者try-catch也无法捕获到的异常时,程序就会自动退出。如果这个时候,没有dump文件的话,我们没有得到任何程序退出的信息。
在Windows程序异常退出之前,会预先调用一个在程序中注册的异常处理回调函数。只要我们在这个回调函数中调用MiniDumpWriteDump函数就可以产生我们想要的dump文件。
3、实现
- 调用SetUnhandledExceptionFilter注册一个自定义的异常处理回调函数
- 通过CreateFile创建dump文件,调用MiniDumpWriteDump函数往dump文件写异常信息
- 得到dump文件后,将SetUnhandledExceptionFilter设置为失效状态