【发布时间】:2011-12-04 00:26:38
【问题描述】:
我只找到了一个分析工具 - http://code.google.com/p/android-ndk-profiler/。到目前为止无法让它工作,所以我想知道是否有其他可用的工具。 我需要在物理设备上进行分析,因为我的应用程序甚至无法在模拟器上运行。
【问题讨论】:
标签: android-ndk profiling
我只找到了一个分析工具 - http://code.google.com/p/android-ndk-profiler/。到目前为止无法让它工作,所以我想知道是否有其他可用的工具。 我需要在物理设备上进行分析,因为我的应用程序甚至无法在模拟器上运行。
【问题讨论】:
标签: android-ndk profiling
Shiny profiler 独立于平台,它可以在任何地方运行,并且除了标准 C++ 编译器之外没有任何依赖项。在其更简单的用法中,您需要做的就是在所有函数和方法(或至少是您想要分析的那些)的开头添加一个宏。
【讨论】:
让 Android-NDK 分析器工作并不容易。您需要彻底按照here 的步骤操作。
以下是一些让我成功的秘诀:
正确使用以下函数
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
【讨论】:
英特尔 VTune 放大器。此分析器允许您在 Android 设备上收集具有堆栈的热点,而无需 root 或任何操作系统修改。 这是简单的指南: http://software.intel.com/en-us/articles/using-intel-vtune-amplifier-on-non-rooted-android-devices
【讨论】:
在 NDK r13b 中有一个名为 simpleperf 的新工具
【讨论】: