android anr trace分析,ANR日志traces.txt分析

导致ANR的几种情况

KeyDispatchTimeout(5s): 按键或触摸事件在特定时间内无法处理完成

BroadcastTimeout(前台10s,后台60s): 广播在特定时间内无法处理完成

ServiceTimeout(前台20s,后台200s): Service在特定的时间无法处理完成 另外还有ProviderTimeout和WatchDog等导致的ANR

常见的原因

A.耗时操作,如复杂的layout,庞大的for循环,IO等。

B.被Binder 对端block

C.被子线程同步锁block

D.Binder被占满导致主线程无法和SystemServer通信

E.得不到系统资源(CPU/RAM/IO)

其中ABCD比较好分析,而E比较困难。

应用ANR产生的时候,ActivityManagerService的appNotResponding方法就会被调用,然后在/data/anr/traces.txt文件中写入ANR相关信息.

ANR就不作介绍了,下面只介绍如何分析ANR异常.

通常发生了ANR,ActivityManager会打印报错信息:

E/ActivityManager: ANR in com.rui.android.poc // ANR出现的进程包名

PID: 1322 // ANR进程ID

Reason: Broadcast of Intent { act=android.intent.action.SCREEN_ON flg=0x50000010 }//导致ANR的原因

Load: 4.13 / 2.52 / 1.05

CPU usage from 0ms to 12843ms later://CPU在ANR发生后的使用情况

98% 1322/com.rui.android.poc: 0.5% user + 98% kernel / faults: 1044 minor 104 major

5.6% 567/system_server: 3.4% user + 2.1% kernel / faults: 1940 minor 217 major

2.3% 766/com.android.systemui: 1.2% user + 1% kernel / faults: 251 minor 165 major

1.4% 268/kworker/0:2: 0% user + 1.4% kernel

1.2% 1690/adbd: 0.1% user + 1% kernel / faults: 2 minor 3 major

1% 756/com.android.phone: 0.6% user + 0.3% kernel / faults: 347 minor 61 major

0.9% 139/surfaceflinger: 0.3% user + 0.5% kernel / faults: 1 minor 5 major

0.2% 929/com.sprd.opm: 0.2% user + 0% kernel / faults: 279 minor 115 major

0.2% 23/kworker/u4:1: 0% user + 0.2% kernel

0.2% 368/kworker/u5:1: 0% user + 0.2% kernel

0.1% 914/com.android.modemassert: 0% user + 0% kernel / faults: 182 minor 66 major

0.1% 44/ksmd: 0% user + 0.1% kernel

0% 909/com.spreadst.validator: 0% user + 0% kernel / faults: 164 minor 39 major

0% 8/rcu_preempt: 0% user + 0% kernel

0% 43/kswapd0: 0% user + 0% kernel

0% 117/mmcqd/0: 0% user + 0% kernel

+0% 1770/kworker/0:3: 0% user + 0% kernel

+0% 1774/debuggerd: 0% user + 0% kernel

97% TOTAL: 3.7% user + 55% kernel + 38% iowait // CUP占用情况

CPU usage from 12301ms to 12824ms later:

100% 1322/com.rui.android.poc: 0% user + 100% kernel

100% 1322/rui.android.poc: 0% user + 100% kernel

1.9% 1333/Binder

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值