3

我用 ./emulator -trace profile -avd emulator_15 启动了我的模拟器。然后我将跟踪文件追踪到 ~/.android/avd/rodgers_emulator_15.avd/traces/profile,其中有六个文件:qtrace.bb、qtrace.exc、qtrace.insn、qtrace.method、qtrace.pid、qtrace 。静止的。我不知道如何处理这些文件。我已经在所有文件上尝试了 dmtracedump 和 traceview,但似乎没有一个生成任何我可以做任何事情的输出。

如何查看 Android 上原生方法调用所用时间的比例?

4

2 回答 2

5

您需要使用tracedmdump来转换输出。这是build/envsetup.sh在完整的 Android 源代码中定义的 shell 函数。如果您使用的是 SDK,而不是从完整的树中构建,我不确定这是否可行。

(如果您没有源代码并想查看 tracedmdump 函数,可以在此处查看。)

如果你用过emulator -trace profile,你会跑tracedmdump profile。这将挖掘各种二进制文件以检索符号信息并将其与跟踪数据相关联,生成 HTML 摘要和与 traceview 兼容的跟踪文件。

值得注意的是,启用分析后,VM 将执行得更慢(解释器在每个方法调用和返回上都有开销,并且它在较慢的“调试”解释器中运行),而本机代码继续全速运行,所以你有下结论时要小心。

一般评论:不要忘记使用 F9 或方法调用之一来启动/停止跟踪——该-trace标志只是启用该功能。

于 2010-03-29T19:47:13.117 回答
1

为了使用这六个文件,在与 dmtracedump 相同的目录下还有其他脚本,例如 read_pid、read_trace、profile_trace 等。你应该首先在包含这六个文件的跟踪目录上运行 post_trace,然后你可以使用任何一个他们获取配置文件信息,例如每个基本块的执行频率、它们所属的 pid 等。

于 2011-01-18T01:36:26.383 回答