前言
在开发过程中,我们都会因为各种各样的异退和内存泄漏导致程序崩溃,故而有效分析log日志,是我们必须具备的技能,
异常的分类
- 应用程序无响应
- 空指针
- 数组越界
- 内存溢出
- 内存泄漏
- 其他
异常的解决
-
应用程序无响应
- 当发生应用无响应的时候,代表我们在APP主线程(UI线程)中做了太多的耗时操作,故而我们需要分析,具体是因为什么导致的.
-
step1: 抓取日志
-
抓取全日志
- adb logcat > path_log
-
抓取ANR日志
- adb pull /data/anr/traces.txt path_log
-
某些机型上面两个命令不起作用,故而导出所有的日志
- adb bugreport
- step2: 分析日志
- 全日志
- 在全日制中我们需要去过滤一下以下关键字,来获取关键信息
- “ANR in”
- “CPU usage from”
- “The application may be doing too much work on its main thread”
- 在全日制中我们需要去过滤一下以下关键字,来获取关键信息
- ANR日志
- 在ANR日志中我们需要过滤一下以下关键字,来获取关键信息
- "main"
- 在ANR日志中我们需要过滤一下以下关键字,来获取关键信息
- 全日志
- step2: 分析日志
- adb bugreport
-
空指针、数组越界、其他
当应用程序出现该类型的时候,是最容易发现问题的,也是我们经常处理的异常- step1: 抓取日志
- 同上
- step2: 分析日志
- 在日志中我们需要过滤一下以下关键字,来获取关键信息
- 代码异常
- “Caused by”
- so库异常
- “fatal”
- “signal”
- 其他异常
- “at”
- “Process: 包名XXX, PID:”
- “ZygoteInit”
- “backtrace”
- “app died”
- 代码异常
- 在日志中我们需要过滤一下以下关键字,来获取关键信息
- step1: 抓取日志
-
内存问题
- 在日志中我们需要过滤一下以下关键字,来获取关键信息
- failed with Out of memory
- map buffer is error handle
- is app exit to launcher info
- 在日志中我们需要过滤一下以下关键字,来获取关键信息
异常的解决
在APP解决异常问题的道路上,依然还是很艰难的,需要我们不停的去总结,希望以上的解决思路可以帮助我们解决系列问题