我用./emulator-trace profile-avd emulator启动了模拟器。然后我将跟踪文件跟踪到~/.android/avd/rodgers_emulator_15.avd/traces/profile,其中有六个文件:qtrace.bb、qtrace.exc、qtrace.insn、qtrace.method、qtrace.pid、qtrace.static。我不知道怎么处理这些文件。我在所有文件上都尝试过dmtracedump和traceview,但似乎没有一个生成任何我可以使用的输出。
如何查看android上本机方法调用所占用的时间比例?

最佳答案

您需要使用tracedmdump来转换输出。这是android完整源代码中build/envsetup.sh中定义的shell函数。如果您使用的是sdk,而不是从完整的树构建,我不确定这是否有效。
(如果您没有源代码,想查看traceddump函数,可以看到它here
如果使用emulator -trace profile,则运行tracedmdump profile。这将挖掘各种二进制文件以检索符号信息并将其与跟踪数据关联,生成HTML摘要和与TraceView兼容的跟踪文件。
值得注意的是,vm将在启用分析的情况下执行得更慢(解释器在每次方法调用和返回时都有开销,并且它在较慢的“调试”解释器中运行),而本机代码继续以全速运行,因此在得出结论时必须小心。
一般注释:不要忘记使用f9或其中一个方法调用来启动/停止跟踪,-trace标志只会启用该特性。

09-26 17:39