2012-04-03 2 views
10

Ho un progetto che compila, i carichi e corre nel dispositivo Android piacevolmente. Quando chiamo il server gdb funziona anche bene. Poi, quando chiamo il cliente gdb per funzionare attraverso con punti di interruzione è quando appare il messaggio:Android NDK trovare collegamento dinamico: in grado di eseguire il debug libreria

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 

Questo è il mio file corrente Android.mk, per il caso in qualche configurazione aggiuntiva potrebbe essere mancante:

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) 

Qualche suggerimento su quale sia la ragione di questo strano errore e su come liberarsene?

Tutti i commenti e suggerimenti sono profondamente apprezzati e benvenuti.

+1

Amico, abbiamo appena ottenuto un debugger nel NDK;) non forzarlo .. Penso che il GDB non si collegherà a una lib dinamica. Almeno non ora, speriamo presto .. – Tancho

risposta

5

Uso ndk-gdb invece di standard di gdb. Lanciatelo dalla directory principale del progetto. Potresti utilizzare l'opzione --verbose se desideri vedere che cosa sta facendo ndk-gdb. È necessario aggiungere questa riga al vostro AndroidManifest.xml anche:

android:debuggable="true" 

Per esempio, il mio assomiglia:

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    android:debuggable="true" > 

tua application.mk dovrebbe definire

APP_OPTIM := debug 

Con questo si don' t necessario aggiungere -g ai flag del compilatore, ndk-build lo farà automaticamente.

+0

Impossibile creare un motore di debugger del tipo "Nessun motore" –