2014-02-03 3 views
2

Я пытаюсь отлаживать общую библиотеку, которую я написал в c/C++, но я не могу ее отладить с помощью eclipse. Когда я поставил точку останова никогда не ударил и после выполнения info sharedlibrary в БГД, я получил он следующий, подтверждая, что библиотека не существует (так называемый libtest-java.so)Android GDB не загружает общую библиотеку C++

From  To   Syms Read Shared Object Library 
         No   /system/bin/linker 
0x40093070 0x400c36f8 Yes   /Users/jpuig/Development/test/git/test_lib-protoype/java/test_Android/obj/local/armeabi/libc.so 
         No   libstdc++.so 
         No   libm.so 
         No   liblog.so 
         No   libcutils.so 
         No   libgccdemangle.so 
         No   libcorkscrew.so 
         No   libutils.so 
         No   libbinder.so 
         No   libhardware.so 
         No   libmemtrack.so 
         No   libz.so 
         No   libandroidfw.so 
         No   libexpat.so 
         No   libstlport.so 
         No   libnativehelper.so 
         No   libnetutils.so 
         No   libsync.so 
         No   libui.so 
         No   libGLES_trace.so 
         No   libEGL.so 
         No   libGLESv2.so 
         No   libgui.so 
         No   libinput.so 
         No   libcamera_metadata.so 
         No   libcamera_client.so 
         No   libpng.so 
         No   libft2.so 
         No   libjpeg.so 
         No   libgabi++.so 
         No   libicuuc.so 
         No   libicui18n.so 
         No   libskia.so 
         No   libsqlite.so 
         No   libGLESv1_CM.so 
         No   libETC1.so 
         No   libwpa_client.so 
         No   libhardware_legacy.so 
         No   libselinux.so 
         No   libsonivox.so 
         No   libcrypto.so 
         No   libssl.so 
         No   libstagefright_foundation.so 
         No   libspeexresampler.so 
         No   libaudioutils.so 
         No   libmedia.so 
         No   libusbhost.so 
         No   libharfbuzz_ng.so 
         No   libLLVM.so 
         No   libbcinfo.so 
         No   libbcc.so 
         No   libRS.so 
         No   libRScpp.so 
         No   libhwui.so 
         No   libandroid_runtime.so 
         No   libdvm.so 
         No   libjavacore.so 
         No   memtrack.msm8974.so 
         No   libdrmframework.so 
         No   libdrmframework_jni.so 
         No   libconnectivitymanager.so 
         No   libstagefright_omx.so 
         No   libstagefright_yuv.so 
         No   libvorbisidec.so 
         No   libpowermanager.so 
         No   libstagefright_enc_common.so 
         No   libstagefright_avc_common.so 
         No   libstagefright.so 
         No   libmtp.so 
         No   libexif.so 
         No   libstagefright_amrnb_common.so 
         No   libmedia_jni.so 
         No   libexif_jni.so 
         No   libcommon_time_client.so 
         No   libnbaio.so 
         No   libeffects.so 
         No   libaudioflinger.so 
         No   libvideoeditor_osal.so 
         No   libvideoeditor_videofilters.so 
         No   libvideoeditorplayer.so 
         No   libvideoeditor_core.so 
         No   libvideoeditor_jni.so 
         No   librs_jni.so 
         No   libandroid.so 
         No   libwilhelm.so 
         No   libOpenSLES.so 
         No   libjnigraphics.so 
         No   libwebviewchromium.so 
         No   libwebviewchromium_plat_support.so 
         No   libjavacrypto.so 
         No   libgsl.so 
         No   libadreno_utils.so 
         No   libEGL_adreno.so 
         No   libGLESv1_CM_adreno.so 
         No   libGLESv2_adreno.so 
         No   eglsubAndroid.so 
         No   libsc-a3xx.so 
         No   libqdutils.so 
         No   libmemalloc.so 
         No   gralloc.msm8974.so 
0x77dbd638 0x77eb97b8 No   /Users/jpuig/Development/test/git/test_lib-protoype/java/test_Android/obj/local/armeabi/libtest-java.so 

Существует ли способ, чтобы загрузить эту библиотеку вручную или что-то ??? в файле макияжем я использую следующее:

включают $ (CLEAR_VARS)

###### 
LOCAL_CPPFLAGS += -D DEBUG=1 -D NDK_DEBUG=1 
LOCAL_CFLAGS += -D DEBUG=1 -D NDK_DEBUG=1 
APP_OPTIM := debug 
APP_CFLAG := -g -ggdb -O0 
###### 

Большое спасибо за ваше время!

+0

не должен NDK_DEBUG = 1 быть параметром для НКА-сборки команды? – marcinj

+0

Имеет ли это какое-либо отношение к GDB, или проблема в том, что библиотека не загружается в процесс во время выполнения? Какова ваша теория, почему процесс * должен * загружать вашу библиотеку? Какой тип проекта вы строите в любом случае, обычное приложение с дополнительной библиотекой jni? Родная деятельность, где вы предоставляете только библиотеку jni? Автономный исполняемый файл с динамической библиотекой? Вы явно загружаете библиотеку из своего кода или ожидаете, что компоновщик выведет, что это необходимо? –

ответ

2

Мне удалось это исправить!

Я загрузил библиотеку в другом классе, и моя MainActivity вызывала ее, когда была нажата кнопка, поэтому, когда GDB был готов, библиотеки, загружаемые ... Я думал, что GDB заберет новую библиотеку во время выполнения, поэтому для того, чтобы загрузить библиотеку я добавил следующие строки в статическом конструкторе первого класса под названием:

static { 
     System.loadLibrary("test-java"); 
    } 
+0

Кто-нибудь знает способ загрузить его после подключения gdb ?? –