https://blog.csdn.net/xjz696/article/details/97958441
解决方案:做Android研发的大家应该都知道adb有个命令叫bugreport,至于这个命令是干嘛的大家可以自己去百度去Google,今天主要讲怎么用这个命令去拿到ANR的trace信息。
Step1: 将发生ANR的手机打开"开发者选项"并启动"调试模式"(不会的自行百度)
Step2:将手机连接到电脑上
Step3:在电脑的命令行里面执行命令 "adb bugreport anrlog.zip" (anrlog.zip是生成文件的名字,自己可以随便写),这里有个前提是你的电脑装了adb,没装的自行百度如何安装。
Step4:解压生成好的anrlog.zip文件,大概是下图的结构,打开第一个文件,也就是体积最大的那个文件。

Step5:文件打开一看乱七八糟啥都有,其实这就对了,那么我们开始分析这个文件,找出trace信息。
搜索关键字: "VM TRACES AT LAST ANR",一般就能定位到下图的位置,你看看进程名和时间跟你的进程对上不,对上那就OK了,顺着往下翻就是这次ANR的trace信息了。

Step6:至于分析ANR到底是啥原因引起,那就学问大了去了,我一般也就是分析下主线程卡在哪里了,就跟下图一样。如果一眼看不出来,那就继续去搜索前人的经验吧,怎么根据trace信息分析ANR。
如果分析不出来需要查看cpu以及内存的占用信息,"CPU usage from"这个关键字可以搜到anr发生前后cpu的占用情况。

网友评论