Android如何分析native代码,使用android-ndk-profiler对native代码进行性能分析
android-ndk-profiler需要使用gcc進(jìn)行編譯,從NDK r13b 起NDK使用的默認(rèn)編譯器從gcc換成了clang,官方提供了Simpleperf工具進(jìn)行性能分析,具體情況可以參考https://developer.android.google.cn/ndk/guides/simpleperf 。
下載
使用
編譯方面的改動(dòng)
修改Android.mk以導(dǎo)入android-ndk-profiler模塊
# compile with profiling
LOCAL_CFLAGS := -pg
LOCAL_STATIC_LIBRARIES := android-ndk-profiler
# 在 Android.mk 最后
$(call import-add-path,$your_path) #導(dǎo)入android-ndk-profiler的路徑
$(call import-module,android-ndk-profiler)
代碼方面的改動(dòng)
在開(kāi)始和結(jié)束的方法里分別調(diào)用monstartup 和 moncleanup。
//在代碼開(kāi)始前
monstartup("your_lib.so");
//在代碼結(jié)束后
moncleanup();
代碼分析生成的gmon.out文件保存在/sdcard/gmon.out。在AndroidManifest.xml文件添加寫(xiě)入權(quán)限,以便應(yīng)用能寫(xiě)入到sd卡。
得到結(jié)果
編譯程序運(yùn)行,使用adb把gmon.out文件拉到電腦上。
adb pull /sdcard/gmon.out .
運(yùn)行g(shù)prof工具,將帶有調(diào)試信息的庫(kù)(通常在 $PROJECT/obj/local/armeabi-v7a/libXXXX.so)作為參數(shù)傳給gprof工具就能得到結(jié)果了。
$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-gprof your_lib.so
總結(jié)
以上是生活随笔為你收集整理的Android如何分析native代码,使用android-ndk-profiler对native代码进行性能分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java包图标是文件_关于更换.jar文
- 下一篇: android动态设置src,Andro