我只找到了一个分析工具 - http://code.google.com/p/android-ndk-profiler/。目前还无法使用,因此想知道是否有其他可用的工具。 我需要在物理设备上进行分析,因为我的应用程序甚至无法在模拟器上运行。
我只找到了一个分析工具 - http://code.google.com/p/android-ndk-profiler/。目前还无法使用,因此想知道是否有其他可用的工具。 我需要在物理设备上进行分析,因为我的应用程序甚至无法在模拟器上运行。
让Android-NDK profiler工作并不容易。您需要彻底按照这里的步骤进行操作。
以下是导致我成功的一些提示:
正确使用以下函数
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
Shiny profiler是跨平台的,可以在任何地方运行,并且除了标准的C++编译器外没有其他依赖项。在简单使用时,您只需要在所有函数和方法(或至少要进行分析的函数和方法)的开头添加一个宏即可。
Intel VTune Amplifier是一款分析器,可以在不需要root或进行任何操作系统修改的情况下,在Android设备上收集带有堆栈的热点信息。以下是简单指南:http://software.intel.com/en-us/articles/using-intel-vtune-amplifier-on-non-rooted-android-devices
android-ndk-profiler
,因为 android-ndk-profiler 使用 GCC 技巧自动在每个函数的开头运行其代码(而shiny-profiler
需要手动向每个函数添加宏)。 - Top-Master