Windows程序crash该怎么分析?

一、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分析七式

  1. 根据“fatal”关键字附近的异常堆栈来分析,找不到转下一步
  2. 根据“uncaught”关键字附近的异常堆栈来分析,找不到转下一步
  3. 根据 “#00 pc” 关键字附近的异常堆栈来分析,找不到转下一步
  4. 根据”.so”关键字附近的异常堆栈来分析,找不到转下一步
  5. 根据”crash”关键字附近的异常堆栈来分析,找不到转下一步
  6. 根据”die”关键字附近的异常堆栈来分析,找不到转下一步(这一步里,有时候可能是进程被kill或者自己调用killProcess()自杀,这种情况是没有堆栈的)
  7. 根据”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设置为失效状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值