【问题标题】:How to View Android Native Code Profiling?如何查看 Android 原生代码分析?
【发布时间】:2010-03-29 17:29:30
【问题描述】:

我使用 ./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上原生方法调用的时间比例?

【问题讨论】:

    标签: android android-emulator profiling qemu


    【解决方案1】:

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

    (如果没有源码想看tracedmdump函数,可以看here。)

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

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

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

    【讨论】:

    • 我怀疑你的意思是 dmtracedump 而不是 tracedmdump。我的 /Developer/android-sdk-mac_86/tools 目录中确实有一个具有该名称的脚本,但是运行 dmtracedump ~/.android/avd/emulator_15.avd/traces/profile 会给出:错误:无法从跟踪中读取 272 个字节文件无法读取跟踪。 profile 是一个目录,所以我期待一个或多个文件是关键的。我确实在想要跟踪之前和之后按了 F9,所以这应该不是问题,而且我的应用程序将 97% 的时间花在一个 Java 函数上,所以这绝对是我需要优化的地方。
    • 可悲的是,我的意思是 tracedmdump(可悲的是,这些名称非常熟悉,以至于让人感到困惑)。 dmtracedump 是一个命令行工具,用于格式化 Dalvik 跟踪文件;它采用与 traceview 相同类型的输入。 tracedmdump 用于将模拟器的私有跟踪格式转换为工具可以使用的格式。如果你谷歌“模拟器跟踪 tracedmdump”,你可以找到一些相关的讨论。
    • 对于未来的读者:他是对的,你需要 tracedmdump。它来自您需要掌握并拥有区分大小写的文件系统的 Android 资源。 cd 进入它们,然后运行 ​​make,稍后再回来。 'source build/envsetup.sh' 并在 $PATH 中包含 ${MY_DROUD}/out/host/darwin-x86/bin(在 Mac 上)。然后我就可以运行 tracedmdump ~/.android/avd/emulator_15.avd/profile/,它运行了很长一段时间。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-27
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多