您的位置:首页 > 移动开发 > Android开发

用profiler工具对android ndk程序进行性能分析

2014-11-27 17:59 316 查看
在软件开发的过程中,对于一些对性能较高的程序,经常需要对程序进行性能分析。GNU profiler就是这样一款性能分析工具,后被移植到android平台上,可以对ndk程序进行分析。

使用步骤如下:

1. 下载android-ndk-profiler,地址为:https://code.google.com/p/android-ndk-profiler/wiki/Downloads?tm=2

(如果上不去google code,可以到http://download.csdn.net/detail/loushuai/8206953这里下载,或者联系我发给你)

2. 将android-ndk-profiler.zip 解压到某个目录下,比如“d:\Tools\”

3. 修改Android.mk文件,加入如下内容

LOCAL_CFLAGS := -pg
LOCAL_STATIC_LIBRARIES := android-ndk-profiler


# 在Android.mk文件最后

$(call import-module,android-ndk-profiler)


4. 修改你的代码。

在初始化阶段加入(别忘了包含压缩包里的prof.h文件):

/* in the start-up code */
monstartup("your_lib.so");
在退出阶段加入:

/* in the onPause or shutdown code */
setenv("CPUPROFILE", "/sdcard/gmon.out", 1);
moncleanup();
其中“your_lib.so”就是你的ndk编出来的动态库文件名。

"/sdcard/gmon.out"是你保存gmon.out文件的路径。

5. 修改AndroidManifest.xml文件,增加对sd卡的写访问权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


6. 重新编译工程

ndk-build NDK_MODULE_PATH=d:\Tools\

其中,“d:\Tools\”换成你实际解压android-ndk-profiler.zip的路径。

OK,至此准备工作完成。

启动你的程序,在程序退出之后,在你所指定的路径中应该会生成一个gmon.out文件。

下面是对结果进行查看的步骤:

1. 将gmon.out文件拷贝到本地,如“d:\gmon.out”

2. 将你的库文件“your_lib.so”拷贝到本地,如“d:\your_lib.so”(注意,这里的so文件不是lib下的so,而是obj/local下的)

3. 用ndk工具包里的gprof工具对结果进行分析

d:\android-ndk-r9d\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-gprof.exe d:\your_lib.so d:\gmon.out就可以看到结果了。如果想把结果存成文本文件,可以使用重定向指令

d:\android-ndk-r9d\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-gprof.exe d:\your_lib.so d:\gmon.out > d:\result.txt

gprof命令的参数很多,具体可以参考官网说明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: