了解Google Play提供的ANR堆栈跟踪

时间:2019-12-10 07:39:25

标签: java multithreading stack-trace google-play-console android-anr-dialog

我们最近使用针对Android的cocos2d-js(3.17.1)开发了一个游戏,并获得了更多的ANR,我想了解如何轻松理解所报告的堆栈跟踪。

我观察到有些线是粗体,有些线是浅灰色,为什么呢,每个线程都有一些状态,某些ANR的警告是黄色的,但没有得到引起该问题的线程。

在google上进行搜索,浏览了很多帖子,google玩过android文档,它仅提供了有关ANR的含义(主线程被阻塞)以及如何处理/防止ANR的信息,无法完全了解我该如何从堆栈跟踪中提取含义,如何进行堆栈跟踪,哪个线程正是导致此问题的原因。

完整的堆栈跟踪位于此处 https://del.dog/unafalycej.txt

附上我们获得最多次数(主线程和阻止线程)的ANR的屏幕截图。

ANR title screenshot

main thread screenshot

blocked thread screenshot

1 个答案:

答案 0 :(得分:0)

以我的经验,最难以分析ANR,但是下面提到的是我执行RCA的一些可能步骤。

  1. 继续寻找特定操作,然后查看ANR,查找其API /方法/ onClick,然后尝试分析该代码。

  2. 查看这些特定方法的日志,之间是否有不必要的调用,请尝试进行性能分析。

  3. 应用程序遇到ANR后,Android在/data/anr/traces.txt处存储一个。尝试提取此文件并开始分析。查找主线程,检查其STATE和stacktrace。有关跟踪文件的详细信息,请参考this

  4. 尝试识别具有较大跳动的线程。还要查看他们的调用堆栈。

  5. 还有线程转储和类似systrace的功能可能会有用。