java - 了解 google play 给出的 ANR 堆栈跟踪
问题描述
我们最近使用 cocos2d-js (3.17.1) 为 android 开发了一个游戏并获得了更多的 ANR,我想了解我们如何轻松理解报告的堆栈跟踪。
我观察到有些行是粗体,有些是浅灰色,为什么会这样,每个线程都有一些状态,有些 ANR 有黄色警告,但没有得到哪个线程导致了问题。
在谷歌上搜索,浏览了很多帖子,谷歌播放 android 文档,它只是提供了关于 ANR 的含义(主线程被阻止)以及如何处理/防止 ANR 的信息,并不完全明白我该怎么做从堆栈跟踪中提取含义,如何通过堆栈跟踪,究竟是哪个线程导致了问题。
完整的堆栈跟踪在这里 https://del.dog/unafalycej.txt
附上我们获得最多时间的 ANR 屏幕截图(主线程和阻塞线程)。
解决方案
以我的经验,ANR 是最难分析的,但下面提到的是我做 RCA 的一些可能步骤。
继续查找特定操作,然后您会看到 ANR,查找它的 API/method/
onClick
,尝试分析该代码。查看这些特定方法的日志,中间是否有任何不必要的调用,如果可能,请尝试分析。
在应用程序遇到 ANR 后,android 会存储一个 at
/data/anr/traces.txt
。尝试提取此文件并开始分析它。寻找主线程,检查其STATE
和堆栈跟踪。有关跟踪文件的详细信息,请参阅此内容。尝试识别具有大 jiffies 的线程。也可以查看他们的调用堆栈。
还有线程转储和
systrace
类似的功能可能很有用。
推荐阅读
- android - 反应导航选项卡未导航回上次查看的选项卡
- windows - 多种方式连接到同一主机上的网络驱动器
- bokeh - 散景:托管时不同比例的堆叠条
- git - 使用受保护的分支在本地解决合并请求
- python - RuntimeError:无法确定主目录
- google-cloud-functions - Cloud Function 以数据形式解析 JSON
- laravel - 头像不显示 Laravel
- ruby-on-rails-5 - 委托为 mongoid 文档抛出错误
- python - 如何迭代 .csv 文件的行并将每一行传递给时间序列分析模型?
- python - 有没有办法减少这种情况?