首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Android Profiler输出中找到主线程等待后台线程持有的锁的所有事件

如何在Android Profiler输出中找到主线程等待后台线程持有的锁的所有事件
EN

Stack Overflow用户
提问于 2021-08-02 05:06:38
回答 1查看 120关注 0票数 1

我的应用程序使用后台线程来初始化主线程加载英雄活动所需的一些内容。它有很多用于同步的锁。我正在寻找一种快速的方法来绘制可能的堆栈痕迹,在那里主线程在应用程序启动期间等待后台线程持有的锁。我检查了Thread Status Monitor. How do I debug this? What's causing it?,但这里讨论的是点对点线程状态,因为我正在寻找在启动期间发生的所有这样的事件,而不知道这些事件发生在哪里。

我确实看到,这些信息可以通过手动检查启动android配置文件跟踪和查看各种线程堆栈来找到这些出现的情况,但有很多数据需要检查。如果这个工具能显示主线程等待其他线程持有锁的次数,总时间以及持有这些锁的位置,那就太好了。

Q1)我们知道Android profiler是否可以显示这一点吗?我查看了https://developer.android.com/studio/profile/cpu-profiler,但找不到。

Q2)如果没有,有没有其他工具可以解析分析器导出的跟踪并打印此信息?

Q3)如果没有,您对如何读取导出的跟踪文件有什么建议吗?它似乎是二进制的。我正在通过https://github.com/JetBrains/android来解决这个问题。它现在似乎正在使用perfetto,但我还不能编写任何实用程序来读取该数据。

更新:我发现CPU概要分析/Systrace选项显示我的主线程确实保持空闲或等待某些资源,但是它没有关于它等待什么或在空闲一段时间后运行什么方法的信息。有什么关于如何结合java方法跟踪和sys跟踪视图的建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-11 15:57:09

Perfetto能够显示此信息。在给定线程的时间线上查找"Lock Contention“消息。它还会打印获得该锁的线程的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68616590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档