Crash

Posted by ooftf on April 13, 2021

名词

  • UV(Unique Visitor)独立访客
  • PV(Page View)访问量
  • Hardcoder(待学习)

Native崩溃

这部分比较难,现在还不是很了解,没有自己的见解,后续补上

JAVA崩溃

为了减少崩溃率,而采用所有地方都封装一层try Catch达到减少崩溃率的目的,而不管异常表现的处理方式,是不可取的。至少应该将catch到的异常上传到服务器进行分析

分析过程

  1. 确定崩溃严重性(线上问题)(触发几率,是否是主流程)
  2. 分析崩溃日志
  3. 查看系统信息和内存信息查找共性(内存信息,手机总内存和App占用内存)
  4. 尝试复现

疑难问题:系统崩溃

这类问题崩溃堆栈可能完全没有我们自己的代码,很难直接定位问题

  1. 尝试规避,是否是因为调用不恰当的API导致的
  2. Hook 解决,找到 Hook 点,对源码执行步骤进行修改

第三方库崩溃

  1. 尝试规避,是否是因为调用不恰当的API导致的
  2. Hook 解决,找到 Hook 点,对源码执行步骤进行修改
  3. 使用 transfom api 修改字节码
  4. 下载源码重新打包

try catch 使用

  • 使用 try catch 的时候要将 exception 调用 e.printStackTrace() 打印出堆栈,方便查看堆栈
  • 如果 catch exception 后,要抛出新的异常要将原exception信息带上 Exception(cause)

崩溃处理

  • 关闭当前界面
  • 展示异常界面
  • 上报崩溃平台

lib

CustomActivityOnCrash Cockroach