Android笔记(六)ANR

转一篇非常棒的文章戳这里

顺便写下点分析ANR的笔记

  • step1 Trace文件中cmd line 看group=”main” 中的blocked-wait,有些trace文件中可以直接找到ANR堆栈信息。
  • step2 分析找不到问题所在就看event log 中的am_anr字段,找到原因所在。如果是inputevent事件没有响应就看5s前做了什么操作,类似地如果是BroadcastTimeOut就分析10s前都干了些啥
  • step3 ANR信息是在AppErrors中的appNotResponed()中生成并保存在trace文件以及DropBox中的。最新的ANR会保存在trace中,DropBox会保存最近几天的信息。
  • appNotResponed()是在AMS中被调用的。常见的ANR有两种情况:

    • 广播发送10s,onReciver没有处理完事件。会在setBroadcastTimeoutLocked中调用appNotResponed()

    • input事件5s内没有响应。会在inputDispatchingTimeOut中调用appNotResponded()

  • trace文件中最为重要的是cmd oneline 中的main,以及cpu在ANR前后的使用情况,其中有表示平均负载的三个参数(Load: xx/xx/xx),分别表示ANR之前1分钟、10分钟、15分钟时的CPU平均负载,作为手持移动设备,我们通常看前1分钟即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值