2011-10-09 61 views

回答

7

要使Android-NDK探查器工作并不容易。您需要彻底遵循步骤here

这里有一些提示,导致我的成功:

  • 确保您android.mk是正确的,您导出NDK_MODULE_PATH。
  • 正确使用以下功能

    monstartup(“your_lib.so”);

    moncleanup();

  • 如果现在生成gmon.out,则需要将其从设备中拉出,但不能放到PC中的任何位置。对于我来说,只要我去应用程序的文件夹的作品(其中JNI,OBJ,资源和其他文件夹),我做的事:

    控制台$ ADB拉SD卡/是gmon.out

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

    控制台$〜/库/ Android的NDK-R9 /工具链/ ARM-Linux的androideabi-4.8 /预建/ Linux的x86_64的/ bin中/ ARM-Linux的androideabi -gprof OBJ /本地/ armeabi-V7A/libxxxx.so> profile.txt

8

Shiny profiler是平台独立的,它运行在任何地方,除了标准的C++编译器外,它没有任何依赖关系。在更简单的用法中,您只需在所有函数和方法(或至少是您想要配置的那些)的开头添加一个宏。

+2

修改项目中的每个功能是痛苦的新工具。我更喜欢自动仪器。但是,谢谢你的提示! –

+3

如果没有其他工作,我保证你会闪亮。我和webOS有类似的问题。 gprof支持被打破了,没有别的可用。 Shiny做得非常好,帮助我解决了性能问题。为了编写代码,我只写了一个脚本,它使用正则表达式定位所有函数体,然后自动插入宏调用,所以根本没有痛苦。祝你好运。 – Miguel

+0

有道理!自动宏插入,我的意思是。谢谢! –

2

英特尔VTune放大器。此分析器允许您收集热点,其中包含Android没有root或任何操作系统修改的设备。 这里有简单的指导: http://software.intel.com/en-us/articles/using-intel-vtune-amplifier-on-non-rooted-android-devices

+0

关于他们开始针对Android的时间。但他们支持ARM,还是只支持x86? –

+0

是的,它在拱门上运作良好。 –

+0

嗨伊利亚! :)它实际上比android-ndk-profiler更好吗?它要多少钱? –

1

在NDK R13B有一个叫simpleperf

+0

Simpleperf记录在https://android.googlesource.com/platform/system/extras/+/master/simpleperf/README.md – osgx