Android手机Log分析

作为一名开发人员,分析日志是必然会用到的,因之开发手机,接触过三大手机平台(高通,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超时