NDK профилирование, показывающее ".so не имеет символов" - PullRequest
6 голосов
/ 29 марта 2012

Я выполняю профилирование NDK для моего проекта с использованием android-ndk-profiler-3.1.Я внес изменения в 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 ();функция в методе остановки.И файл gmon.out успешно создан. Затем я вставил файл gmon.out в папку D: \ android \ android-ndk-r6-windows \ android-ndk-r6 \ toolchains \ arm-linux-androideabi-4.4.3 \ prebuilt\ windows \ bin directory.

Но когда я пытаюсь прочитать 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

Я не могу понять, почему возникает эта ошибка, даже если я все сделал хорошо.

Может кто-нибудь, пожалуйста, помогите мне.

Любая помощь будетбыть оцененным.

Спасибо заранее.

1 Ответ

6 голосов
/ 30 марта 2012

В процессе сборки NDK создаются 2 библиотеки: одна с символами, а другая без. Вы устанавливаете раздетую безсимвольную библиотеку в свой APK, но вам нужно использовать несвязанную версию с gprof. Если вы запустите:

arm-linux-androideabi-gprof D:\InternetTV_FD_Canvas\obj\local\armeabi\libitv.so

... тогда это должна быть правильная библиотека.

...