我们最近使用针对Android的cocos2d-js(3.17.1)开发了一个游戏,并获得了更多的ANR,我想了解如何轻松理解所报告的堆栈跟踪。
我观察到有些线是粗体,有些线是浅灰色,为什么呢,每个线程都有一些状态,某些ANR的警告是黄色的,但没有得到引起该问题的线程。
在google上进行搜索,浏览了很多帖子,google玩过android文档,它仅提供了有关ANR的含义(主线程被阻塞)以及如何处理/防止ANR的信息,无法完全了解我该如何从堆栈跟踪中提取含义,如何进行堆栈跟踪,哪个线程正是导致此问题的原因。
完整的堆栈跟踪位于此处 https://del.dog/unafalycej.txt
附上我们获得最多次数(主线程和阻止线程)的ANR的屏幕截图。
答案 0 :(得分:0)
以我的经验,最难以分析ANR,但是下面提到的是我执行RCA的一些可能步骤。
继续寻找特定操作,然后查看ANR,查找其API /方法/ onClick
,然后尝试分析该代码。
查看这些特定方法的日志,之间是否有不必要的调用,请尝试进行性能分析。
应用程序遇到ANR后,Android在/data/anr/traces.txt
处存储一个。尝试提取此文件并开始分析。查找主线程,检查其STATE
和stacktrace。有关跟踪文件的详细信息,请参考this。
尝试识别具有较大跳动的线程。还要查看他们的调用堆栈。
还有线程转储和类似systrace
的功能可能会有用。