【发布时间】:2013-08-13 22:32:56
【问题描述】:
我正在按照此处的说明为我的应用程序使用 systrace,但每当我尝试为 systrace 设置标签时,我都会收到以下错误:
systrace.py: error: no such option: --set-tags
这似乎是我昨天才发现的一个相当新的问题。有谁知道怎么回事?当我尝试在运行 4.3 的设备上进行系统跟踪时,这似乎只是一个问题。
【问题讨论】:
我正在按照此处的说明为我的应用程序使用 systrace,但每当我尝试为 systrace 设置标签时,我都会收到以下错误:
systrace.py: error: no such option: --set-tags
这似乎是我昨天才发现的一个相当新的问题。有谁知道怎么回事?当我尝试在运行 4.3 的设备上进行系统跟踪时,这似乎只是一个问题。
【问题讨论】:
4.3 没有--set-tags 选项。 systrace 的工作方式发生了显着变化,文档尚未更新。 (编辑:它已针对 4.3 进行了更新)
systrace.py 脚本检查设备版本,并将命令转发到 systrace-legacy.py 用于 4.3 之前的设备。这就是旧命令仍然适用于旧设备的原因。
4.3 设备的示例如下:
python systrace.py gfx view sched dalvik
也就是说,你只需列出你想要的标签作为启动跟踪的命令的参数。
我有一个例子(也展示了新的应用定义标签功能)here。
【讨论】:
gfx 工作有困难吗?由于某种原因,我的设备拒绝输出与gfx 和view 相关的信息,结果是一个空的trace.html 文件……但是,当我指定cpu 时,它似乎可以正常工作。是否需要启用一些额外的设置才能生成 gfx 信息?
gfx 和view 应该很容易——不需要root——所以我很惊讶他们很难。该机制的工作原理是将debug.atrace.tags.enableflags 设置为整数值,通过 Binder IPC 广播“大家好,重新读取标志”,运行跟踪,然后将 enableflags 重置为 0。如果未设置标志或apps+surfaceflinger 看不到广播,他们可能不知道为这些标签记录数据。 (参见 4.3 源代码中的 frameworks/native/cmds/atrace/atrace.cpp。)实现方式在 4.3 中发生了很大变化。
是的,“python systrace.py gfx view sched dalvik”有效,我认为google需要更新systrace.py的帮助信息。
但是,在 Android 4.3 中,您还可以在 Eclipse 中捆绑在最新 android sdk 中的 DDMS 透视窗口中使用“使用 Android systrace 捕获系统范围的跟踪”。就像帖子here一样。
【讨论】: