我有一个很好地在android设备中编译,加载和运行的项目。当我调用gdb服务器时,它也可以正常工作。然后,当我调用gdb客户端以断点运行时,将出现以下消息:

Error while mapping shared library sections:
/system/bin/linker: No such file or directory.

libandroid.so: No such file or directory.
liblog.so: No such file or directory.
libEGL.so: No such file or directory.
libOpenSLES.so: No such file or directory.
libGLESv2.so: No such file or directory.
libGLESv2_POWERVR_SGX540_120.so: No such file or directory.
...
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code
warning: shared library handler failed to enable breakpoint

这是我当前的Android.mk文件,这种情况下可能缺少一些其他设置:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LS_CPP=$(subst $(1)/,,$(wildcard $(1)/*.cpp))
APP_MODULES := callbacks
APP_PLATFORM := android-14
APP_OPTIM:= debug

LOCAL_CFLAGS    := -DRAPIDXML_NO_EXCEPTIONS
LOCAL_CFLAGS    += -g
LOCAL_CFLAGS    += -ggdb
LOCAL_CFLAGS    += -O1

LOCAL_MODULE:=app3D
LOCAL_SRC_FILES := $(call LS_CPP,$(LOCAL_PATH))
LOCAL_LDLIBS    := -landroid -llog -lEGL -lOpenSLES -lGLESv2
LOCAL_STATIC_LIBRARIES := android_native_app_glue png
LOCAL_STATIC_LIBRARIES += /jni

include $(BUILD_SHARED_LIBRARY)

$(call import-module,android/native_app_glue)
$(call import-module,libpng)

关于这种奇怪错误的原因是什么以及如何消除它,有什么建议吗?

所有评论和提示都将受到深深的赞赏和欢迎。

最佳答案

使用ndk-gdb而不是标准gdb。从项目根目录启动它。如果您想查看--verbose在做什么,请考虑使用ndk-gdb选项。
您还必须将此行添加到AndroidManifest.xml中:

android:debuggable="true"

例如,我的看起来像:
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:debuggable="true" >

您的application.mk应该定义
APP_OPTIM := debug

这样,您不必将-g添加到编译器标志中,ndk-build将自动这样做。

关于Android NDK找到动态链接: unable to debug library,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9996738/

10-13 09:08