Android日志分析
1. 获取离线日志文件
- 本地异常日志目录
> 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