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