我们最近使用 cocos2d-js (3.17.1) 为 Android 开发了一款游戏,并获得了更多数量的 ANR,我想了解如何轻松理解报告的堆栈跟踪。
我观察到有些线条是粗体的,有些是浅灰色的,为什么每个线程都有一些状态,有些 ANR 有黄色警告,但不知道是哪个线程导致了问题。
在google上搜索,浏览了很多帖子,google play android 文档,它只是提供了有关 ANR 含义的信息(主线程被阻止)以及如何处理/防止 ANR,但并没有完全了解如何从堆栈跟踪中提取含义,如何查看堆栈跟踪,到底是哪个线程导致了问题。
完整堆栈跟踪位于此处 https://del.dog/unafalycej.txt
附上我们获得最多时间的 ANR 的屏幕截图(主线程和阻塞线程)。
最佳答案
根据我的经验,ANR 是最难分析的,但下面提到的是我进行 RCA 时可能采取的一些步骤。
继续查找特定操作,然后看到 ANR,查找其 API/方法/
onClick
,尝试分析该代码。查看这些特定方法的日志,中间是否有任何不必要的调用,如果可能,请尝试分析。
应用程序遇到 ANR 后,Android 会将 a 存储在
/data/anr/traces.txt
中。尝试拉取此文件并开始分析它。查找主线程,检查其状态和堆栈跟踪。请参阅this有关跟踪文件的详细信息。尝试识别具有大 jiffies 的线程。还可以查看他们的调用堆栈。
还有线程转储和
systrace
之类的功能,这可能很有用。
关于java - 了解 google play 给出的 ANR 堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59262366/