Android 应用崩溃有两种
- 一种是java的崩溃 咱们能够经过Thread.setuncaughtexcetpionhandler来设置崩溃捕捉
- 第二种就是native崩溃 navtive 崩溃流程
native 崩溃 捕捉工具 待补充java
应对崩溃的处理
与破案相同,咱们须要尽量的收集到案发现场的信息,这有助于咱们来破案linux
- 崩溃的信息:
- 进程名,线程名:有助于判断崩溃发生的场景,是否是主线程
- 崩溃的类型:native崩溃?java崩溃?anr?
- 发生崩溃时的关键线程和当前线程的堆栈
- 系统信息:
- logcat 日志
- 设备机型,系统,厂商,cpu,api,linux版本等等
- 设备root?多开?
- 内存状态:
- 当前设备的内存状态
- 当前应用的内存状态
- 虚拟内存状态
- 其余状况:
- 业务操做逻辑:
对应的操做手段
- 确认崩溃的类型是java崩溃仍是native崩溃仍是anr?
- anr:先看主线程的堆栈,是否锁引发的 再看anr的日志,是不是io问题,仍是gc问题
- java:查看java堆栈,若是是oom等问题能够去查看内存使用状况,top信息等
- logcat:能够获取到手机的状态,好比am_anr,am_kill, gc等消息
- 尝试复现
- 寻找可能出现的问题尝试解决,添加防护性的代码
- 尝试规避问题
- 尝试hook 解决 android7的toast报错问题