获取错误报告
- 通过开启开发者选项,生成错误报告
- 通过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 列出部分正在运行的进程