如何从 traces.txt 中知道线程处于当前状态的时间
How to know time for which a thread has been in its current state from traces.txt
例如,如果我有 traces.txt file
并且线程的状态如下:
"callActivityManagerForStrictModeDropbox" prio=5 tid=71 Suspended
| group="main" sCount=1 dsCount=0 obj=0x13394a00 self=0x42746c00
| sysTid=1659 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0x7b491e80
| state=S schedstat=( 264773038 522311652 63568 ) utm=0 stm=26 core=1 HZ=100
| stack=0x7d40c000-0x7d40e000 stackSize=1036KB
根据以上数据,有什么方法可以知道线程保持挂起状态的持续时间是多少?
没有状态更改时间戳。您无法判断线程处于当前状态的时间有多长。
schedstat 和 utm/stm 可以在两个连续的堆栈跟踪之间进行比较,以查看线程是否同时执行,但这对 ANR 并没有真正帮助。
在 Dalvik 中,ANR 输出中处于 SUSPENDED 状态的线程在 ANR 处理程序唤醒之前会处于 运行 状态——它被暂停是为了收集 ANR 报告的堆栈跟踪.你的踪迹似乎来自 ART,我无法与之交谈,但如果它以类似的方式表现,我不会感到惊讶,在这种情况下你的问题很容易回答 ("not very long")。
例如,如果我有 traces.txt file
并且线程的状态如下:
"callActivityManagerForStrictModeDropbox" prio=5 tid=71 Suspended
| group="main" sCount=1 dsCount=0 obj=0x13394a00 self=0x42746c00
| sysTid=1659 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0x7b491e80
| state=S schedstat=( 264773038 522311652 63568 ) utm=0 stm=26 core=1 HZ=100
| stack=0x7d40c000-0x7d40e000 stackSize=1036KB
根据以上数据,有什么方法可以知道线程保持挂起状态的持续时间是多少?
没有状态更改时间戳。您无法判断线程处于当前状态的时间有多长。
schedstat 和 utm/stm 可以在两个连续的堆栈跟踪之间进行比较,以查看线程是否同时执行,但这对 ANR 并没有真正帮助。
在 Dalvik 中,ANR 输出中处于 SUSPENDED 状态的线程在 ANR 处理程序唤醒之前会处于 运行 状态——它被暂停是为了收集 ANR 报告的堆栈跟踪.你的踪迹似乎来自 ART,我无法与之交谈,但如果它以类似的方式表现,我不会感到惊讶,在这种情况下你的问题很容易回答 ("not very long")。