Android手机在没有/data/anr目录权限的情况下如何分析ANR

背景:ANR一直以来都是一个比较头疼的问题,当开发中碰到ANR的时候我们该如何分析呢?常规的方案都是去手机的/data/anr目录下拿trace文件,然后再分析trace文件。那问题来了,现在好多研发、测试的开发机都是没有root而且又没有/data/anr目录权限的,在这种情况下我们该怎么定位呢?今天我们就主要聊下这个问题

解决方案:做Android研发的大家应该都知道adb有个命令叫bugreport,至于这个命令是干嘛的大家可以自己去百度去Google,今天主要讲怎么用这个命令去拿到ANR的trace信息。

Step1: 将发生ANR的手机打开"开发者选项"并启动"调试模式"(不会的自行百度)

Step2:将手机连接到电脑上

Step3:在电脑的命令行里面执行命令 "adb bugreport anrlog.zip" (anrlog.zip是生成文件的名字,自己可以随便写),现在命令已经变更成:"adb bugreport > bugreport.txt",这里有个前提是你的电脑装了adb,没装的自行百度如何安装。

Step4:解压生成好的anrlog.zip文件,大概是下图的结构,打开第一个文件,也就是体积最大的那个文件。

Step5:文件打开一看乱七八糟啥都有,其实这就对了,那么我们开始分析这个文件,找出trace信息。

我的经验搜索关键字: "VM TRACES AT LAST ANR",一般就能定位到下图的位置,你看看进程名和时间跟你的进程对上不,对上那就OK了,顺着往下翻就是这次ANR的trace信息了。

还有一个关键字可以用:onAppNotResponding error = Application Not Responding for at least 5000 ms

Step6:至于分析ANR到底是啥原因引起,那就学问大了去了,我一般也就是分析下主线程卡在哪里了,就跟下图一样。如果一眼看不出来,那就继续去搜索前人的经验吧,怎么根据trace信息分析ANR。

如果分析不出来需要查看cpu以及内存的占用信息,"CPU usage from"这个关键字可以搜到anr发生前后cpu的占用情况。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值