ANR 分析流程

ANR 分析流程

一、基本流程

1.确定anr发生的时间(通过event_log搜索“am_anr”或打印trace时间点判断)

2.查看CPU占用情况(通过adblog搜索"ANR in",搜索total关键字,查看CPU的整体使用情况)

3.查看Trace文件,分析主线程等是否存在明显的阻塞与sleep

步骤一

在这里插入图片描述
如果log很全的情况下在确定了anr的时间点后,找到应用的进程,在log中直接主进程号,可以快速的定位问题大致发生的时间节点
在这里插入图片描述
如图定位到问题进程号为5231 ,此时过滤主进程,结合anr发生的时间点,则可以定位到问题发生的代码大致在组件初始化附近

步骤二

在这里插入图片描述
在这里插入图片描述
CPU已接近100% ,其中 kswapd已达40% Total里面kernel已达50% ,,说明低内存严重,kswapd一般不会超过25%。 这么高说明内存碎片多,或者kernel不断的在回收
在这里插入图片描述
从log中可以看到,地区系统遇到了低内存的情况,在进行回收,这种情况查看应用自身的占比是否偏高,若无偏高,一般不是应用自身的问题

CPU分析中各个字段的含义如下:

字段含义
userCPU在用户态的运行时间,不包括nice值为负数的进程运行的时间
niceCPU在用户态,nice值为负数的进程运行的时间
systemCPU在内核态运行的时间
idleCPU空闲时间,不包括iowait时间
iowaitCPU等待I/O操作的时间
irqCPU硬中断的时间
softirqCPU软中断的时间
步骤三

在这里插入图片描述
主线程阻塞,阻塞原因为等待线程号为13的线程释放锁
在这里插入图片描述
线程13号的getExternalCacheDir方法持有了锁,一直未释放导致,问题已定位,可以根据具体原因去处理遇到的问题

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值