获取错误报告
- 通过开启开发者选项,生成错误报告
- 通过adb命令获取:adb bugreport D:\Reports
分析错误报告
默认情况下,错误报告是 ZIP 文件。ZIP 文件名类似 bugreport-BUILD_ID-DATE.zip,它可能会包含多个文件,但最重要的文件是 bugreport-BUILD_ID-DATE.txt。此文件就是错误报告,它包含系统服务 (dumpsys)、错误日志 (dumpstate) 和系统消息日志 (logcat) 的诊断输出。系统消息包括设备抛出错误时的堆栈轨迹,以及从所有应用中使用 Log 类写入的消息
查看日志
展示最近时间段内的日志
1 |
|
ANR和死锁
当某个应用在一定时间内没有响应(通常是由于主线程被阻塞或繁忙)时,系统会终止该进程并将堆栈转储到 /data/anr。要找出 ANR 背后的罪魁祸首,请为二进制事件日志中的 am_anr 执行 grep 命令
VM TRACES AT LAST ANR、VM TRACES JUST NOW部分查找堆栈跟踪。
WATCHDOG KILLING SYSTEM PROCESS 查找死锁
1 | grep "am_anr" bugreport-xxxx-xx-xx-xx-xx-xx.txt |
Activity活动
- am_focused_activity 关键字搜索聚焦Activity
- Start proc关键字搜索进程启动事件
- am_proc_died 和 am_proc_start 关键字搜索进程启动和终止事件
1 | 查看处理聚焦的Activity |
内存异常
内存不足可能会导致系统发生颠簸,这是因为虽然内存不足时系统会终止某些进程来释放内存,但又会继续启动其他进程。要查看内存不足的确凿证据,请检查二进制事件日志中 am_proc_died 和 am_proc_start 条目的密集程度.
关于系统颠簸(分页、直接回收等)的其他指标包括 kswapd、kworker 和 mmcqd 消耗的 CPU 周期。
am_low_memory 表示最后一个缓存的进程已终止
Total PSS by OOM adjustment 列出内存快照
1 | grep "am_low_memory" bugreport-xxxx-xx-xx-xx-xx-xx.txt |
广播
Historical broadcasts summary显示广播的历史记录
ACTIVITY MANAGER BROADCAST STATE 查看广播监听器
进程
DUMP OF SERVICE procstats 部分包含有关进程及相关服务已运行时长的完整统计信息
ACTIVITY MANAGER RUNNING PROCESSES 列出部分正在运行的进程