我正在使用android-ndk-profiler-3.1为我的项目进行NDK分析。我在Android.mk中进行了如下更改...
LOCAL_PATH := $(call my-dir)
-include android-ndk-profiler.mk
include $(CLEAR_VARS)
# Module name -------------------------------------------------------
LOCAL_CFLAGS += -O3
TARGET_ARCH_ABI :=armeabi
LOCAL_CFLAGS := -pg
LOCAL_STATIC_LIBRARIES := andprof
LOCAL_LDLIBS += -llog
LOCAL_MODULE := libitv
include $(BUILD_SHARED_LIBRARY)
Application.mk如下......
APP_ABI := armeabi
APP_PLATFORM := android-10
我打电话给monstartup(“itv.so”);函数在本机代码和moncleanup()的开头;在stop方法中起作用。并且gmon.out文件已成功创建。然后我已将gmon.out粘贴到 D:\ android \ android-ndk-r6-windows \ android-ndk-r6 \ toolchains \ arm-linux-androideabi-4.4.3 \ prebuilt \ windows \ bin目录。
但是当我尝试使用以下命令读取gmon.out时......
D:\android\android-ndk-r6-windows\android-ndk-r6\toolchains\arm-linux-androideab
i-4.4.3\prebuilt\windows\bin>arm-linux-androideabi-gprof D:\InternetTV_FD_Canvas
\libs\armeabi\libitv.so > out.txt
此错误正在显示......
arm-linux-androideabi-gprof: file `D:\InternetTV_FD_Canvas\libs\armeabi\libitv.so'
has no symbols
即使我做得很好,我也无法弄清楚为什么会出现这种错误。
任何人都可以帮助我。
任何帮助将不胜感激。
先谢谢。
答案 0 :(得分:6)
NDK构建过程创建了2个库,一个带有符号,另一个带有剥离。您在APK中安装了剥离的无符号库,但是您需要使用带有gprof的未剥离版本。如果您运行:
arm-linux-androideabi-gprof D:\InternetTV_FD_Canvas\obj\local\armeabi\libitv.so
...那应该是正确的库。