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