作为一名开发人员,分析日志是必然会用到的,因之开发手机,接触过三大手机平台(高通,MTK,展讯)的Log抓取及分析,虽然大部份对APP开发关系不大,但有些还是相通的。简单整理下Log分析步骤:
一、分析前准备
获得Log相关文件(APP开发通常只需关注AP端的Log即可):
- AP的log,可通过:
adb logcat -v time >log
adb logcat >temp.txt –b main –b system –b events –b radio –v time –d抓取 -
Kernel的log,可通过:
adb shell cat /proc/kmsg -
Modem端的Log,根据不同平台提供的Log抓取,如高通提供的QXDM
其他相关的文件:
- 获取anr的traces文件 :adb pull /data/anr
- 在某些情况下获取tombstones文件:adb pull /data/tombstones
二、Log给了我们什么
- 程序异常,uncaused exception
- 程序强制关闭,forced closed(FC)
- 程序无响应,application not response(ANR)
- 跟踪流程状态等
三、如何分析Log
查找关键字:常见的有fatal,error,exception,anr等,通过查找,快速定位问题。
-
没有捕获异常问题
此类出错问题都会定位到具体的代码行数
对于空指针,首先分析为什么会空指针,如果逻辑上没有问题,加上判断(可以是非空判断,也可以是重新赋值或返回等)
其他的异常能捕获的就捕获 -
ANR问题
结合log文件和trace文件分析原因,看什么原因导致的,然后优化代码
常见的ANR原因有:
KeyDispatchTimeout(5 seconds) key事件响应超时
BroadcastTimeout(10 seconds) BroadcastReceiver超时
ServiceTimeout(20 seconds) service超时