【问题标题】:Android: is there any tool for profiling native code?Android:是否有任何用于分析本机代码的工具?
【发布时间】:2011-12-04 00:26:38
【问题描述】:

我只找到了一个分析工具 - http://code.google.com/p/android-ndk-profiler/。到目前为止无法让它工作,所以我想知道是否有其他可用的工具。 我需要在物理设备上进行分析,因为我的应用程序甚至无法在模拟器上运行。

【问题讨论】:

    标签: android-ndk profiling


    【解决方案1】:

    Shiny profiler 独立于平台,它可以在任何地方运行,并且除了标准 C++ 编译器之外没有任何依赖项。在其更简单的用法中,您需要做的就是在所有函数和方法(或至少是您想要分析的那些)的开头添加一个宏。

    【讨论】:

    • 修改项目中的每一个函数都是痛苦的。我更喜欢自动仪表。但是感谢您的提示!
    • 如果没有其他办法,我向你保证 Shiny 会的。我对 webOS 也有类似的问题。 gprof 支持被破坏,没有其他可用的。 Shiny 做得非常好,帮助我解决了性能问题。为了检测代码,我只是编写了一个脚本,使用正则表达式定位所有函数体,然后自动插入宏调用,所以一点也不痛苦。祝您搜索顺利。
    • 有道理!自动宏插入,我的意思是。谢谢!
    • 有没有文档/使用示例?
    【解决方案2】:

    让 Android-NDK 分析器工作并不容易。您需要彻底按照here 的步骤操作。

    以下是一些让我成功的秘诀:

    • 确保您的 android.mk 是正确的并且您导出了 NDK_MODULE_PATH。
    • 正确使用以下函数

      monstartup("your_lib.so");

      moncleanup();

    • 如果现在生成了 gmon.out,您需要将其从设备中拉出,而不是拉到 PC 中的任何位置。对我来说,它只有在我转到应用程序的文件夹(jni、obj、res 和其他文件夹所在的位置)并且我这样做时才有效:

      console$ adb pull sdcard/gmon.out

    • 然后运行 ​​gprof。试试你的 NDK 工具链中的所有版本。对我来说只有一个有效,这个:

      console$ ~/Libraries/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gprof obj/local /armeabi-v7a/libxxxx.so > profile.txt

    【讨论】:

      【解决方案3】:

      英特尔 VTune 放大器。此分析器允许您在 Android 设备上收集具有堆栈的热点,而无需 root 或任何操作系统修改。 这是简单的指南: http://software.intel.com/en-us/articles/using-intel-vtune-amplifier-on-non-rooted-android-devices

      【讨论】:

      • 他们开始瞄准 Android 的时间差不多了。但是它们支持 ARM,还是只支持 x86?
      • 嗨伊利亚! :) 它实际上比 android-ndk-profiler 更好吗?多少钱?
      • 据我所知,android-ndk-profiler 需要将您的代码与他们的库链接。你可以试试试用版。 software.intel.com/en-us/intel-system-studio
      • VTune 不支持 64 位 arm。在我的 32 位 arm 三星设备上,三星安全监视器跳入并阻止它工作。我无法让配置文件用完 vtune for android。
      【解决方案4】:

      在 NDK r13b 中有一个名为 simpleperf 的新工具

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2019-02-18
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多