ANR 检测¶
检测 ANR(Application Not Responding)事件,通过多信号分析定位根因。
概述¶
当应用主线程被阻塞过长时间(通常 5 秒以上)时会发生 ANR。perfetto-cli 从 Perfetto trace 中检测 ANR 事件并对其严重程度进行分级。
命令¶
anr detect¶
检测 ANR 事件并进行严重程度分级。
选项:
| 选项 | 说明 | 默认值 |
|---|---|---|
--min-duration <ms> |
最小 ANR 持续时间 | 无 |
示例输出:
ANR Events (2 found)
┌──────────┬──────────┬──────────────┬──────────┐
│ Time │ Duration │ Thread │ Severity │
├──────────┼──────────┼──────────────┼──────────┤
│ 5.234s │ 6.1s │ main │ CRITICAL │
│ 12.001s │ 5.3s │ main │ HIGH │
└──────────┴──────────┴──────────────┴──────────┘
anr root-cause¶
多信号根因分析。关联 CPU、锁竞争、Binder 和 I/O 信号来定位最可能的原因。
选项:
| 选项 | 说明 | 必填 |
|---|---|---|
--anr-timestamp <ms> |
要分析的 ANR 事件时间戳 | 是 |
工作流程¶
- 运行
anr detect找到 ANR 事件及其时间戳 - 选择目标 ANR 时间戳
- 运行
anr root-cause --anr-timestamp <ts>进行详细根因分析
提示¶
- 使用
--min-duration过滤边界情况,专注于严重 ANR - 结合
cpu contention查看锁竞争是否导致了 ANR - 使用
-f json将 ANR 检测集成到 CI 流水线中