Android问题篇之日志分析(四)

421 阅读1分钟

Android日志分析

1. 获取离线日志文件

  • 本地异常日志目录

local_error_log.png

> adb shell
/data/tombstones
/data/anr
/data/system/dropbox

// 导出本地日志至D盘
adb bugreport D:\aaa
adb pull /data/user_de/0/com.android.shell/files/bugreports/bugreport-xxx.zip D:\aaa

2. 选中所有日志NotePad++打开

3. 根据日志某个tag找进程id,全局搜索进程id,过滤app相关日志

4. 关键字过滤相关日志

// ANR发生时主进程堆栈信息
--------- beginning of system
--------- beginning of events

// ANR相关异常日志
"main" prio=
// 主线程搜main
// 快速定位anr日志
---pid
Cmd line: com.dcxing.xxx(包名对应,日志就成功对应异常日志)
Cmd line: system_server(异常发生在系统服务)
...

// native异常
"main" prio=6 tid=1 Native

// Crash异常
beginning of crash
---beginning of crash
Fatal

// event_log搜am_anr

// 死锁阻塞日志
Subject:
Subject:executing service
Subject:Input dispatching time out

// CPU使用情况日志
CPU usage from

// 空指针日志
null pointer dereference

快速定位日志关键字

  • app闪退、崩溃:fatal、crash、Force finishing activity
  • framework崩溃(如反射调用不存在接口):AndroidRuntime 或 Shutting down VM
  • ANR问题:anr
  • 页面分析:Exception、Error

日志抓取

// 抓全部日志
adb logcat -b all > logcat_all.txt

// 抓错误日志
adb logcat -s *:E > logcat_err.log

// 抓INFO或以上级别的日志
adb logcat -s *:I

// 抓某一进程的log
adb logcat | grep $(adb shell pidof com.xxx)

// 后台抓取日志
adb logcat -f sdcard/log.txt