获取trace文件
1、获取ANR日志 adb bugreport,导出trace文件,分析trace, pid, tid
2、解压日志后/data/anr路径下根据发生时间选择对应文件
3、—– pid 17172 at 2025-07-08 15:53:02 —–
根据当前pid分析出17172进程出现问题并且记录发生时间
分析ANR
- 通过进程ID17172搜索定位到
1 | "main" prio=5 tid=1 Native |
- 解释字段含义
“main” prio=5 tid=1 Native1
2
3
4"main":线程名称(主线程)。
prio=5:线程优先级(5 是默认优先级,范围 1~10,值越大优先级越高)。
tid=1:线程 ID(1 通常是主线程)。
Native:线程当前在执行 本地代码(JNI/NDK),而非 Java/Kotlin 代码。
group=”main” sCount=1 dsCount=0 flags=1 obj=0x7261bba8 self=0x7e35a97c00
1 | group="main":线程所属组(主线程组)。 |
sysTid=17172 nice=-10 cgrp=default sched=0/0 handle=0x7e37005ed0
1 | sysTid=17172:系统级线程 ID(与 ps -t 命令看到的 ID 一致)。 |
state=S schedstat=( 13473368664 317028758 13398 ) utm=1066 stm=281 core=5 HZ=100
1 | state=S:线程当前状态(S 表示休眠/Sleeping,其他常见状态:R=运行中,D=不可中断休眠)。 |
字段 | 当前值 | 正常参考值 | 问题指示 |
---|---|---|---|
nice | -10 | 0 | 异常提高优先级,需审查代码 |
schedstat | 13.47秒运行 | <100ms | 主线程重度占用 CPU |
utm/stm | 10.66s/2.81s | <1s | 存在未异步化的耗时任务 |