Ne peut pas accéder à la mémoire à l'adresse 0X1 après avoir configuré gdb et eclipse pour déboguer la bibliothèque partagée depuis l'application Android

J'ai deux projets Android: l'une est une bibliothèque et l'autre une application régulière utilisant cette bibliothèque. Mon but est de déboguer la bibliothèque partagée de l'application Android. J'ai suivi ce guide:

Using Eclipse for Android C/C++ Debugging

  • Com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: Impossible d'installer tous
  • Exportation et importation simples d'une base de données SQLite sur Android
  • Comment détecter les informations système comme type d'OS ou de périphérique
  • Android Toast équivalent dans iOS
  • Android SeekBar définit la valeur de progression
  • La compilation a échoué après la mise à jour des outils pour Android L
  • Et j'ai commenté la dernière ligne

    ##$GDBCLIENT -x `native_path $GDBSETUP` 

    Mais la ligne suivante

     ##cp -f $GDBSETUP_INIT $GDBSETUP 

    Se plaint du message:

    it cannot stat ./libs/armeabi-v7a/gdb.setup

    Je l'ai commenté, car je pense que Eclipse l'aura téléchargé pour moi. En plus de cela, je me suis assurée que:

    • Dans Android.mk, j'ai mis LOCAL_CFLAGS: = -Wall -g

    • Je reçois le .so dans la bibliothèque libs de la demande

    • Je l'ai rendu débauchable dans l'application

    • Le chemin gdb2.setup modifié pour se référer à la fois à .so using solib-search-path ./libs/armeabi-v7a/ et la source est référencée à l'aide du répertoire

    Après avoir parcouru l'instruction System.LoadLibrary, j'ai exécuté ndk-build-eclipse et aucune erreur n'a été produite et lorsque j'ai commencé à déboguer en natif, j'ai eu:

    Impossible d'accéder à la mémoire à l'adresse 0x1

    Et sur Cygwin j'ai eu:

    Débogage à distance depuis l'hôte 0.0.0.0

    Voici la sortie de l'exécution de la commande ndk-gdb-eclipse:

     $ ./ndk-gdb-eclipse --adb=/cygdrive/c/Utilities/adt-bundle-windows/adt-bundle-windows/sdk/platform-tools/adb --project=/cygdrive/c/Projects/IDSmart/IDSmartApp/IDSmart --force --port=5039 --verbose Android NDK installation path: /cygdrive/c/Utilities/android-ndk-r8c-windows/android-ndk-r8c/. Using specific adb command: /cygdrive/c/Utilities/adt-bundle-windows/adt-bundle-windows/sdk/platform-tools/adb ADB version found: Android Debug Bridge version 1.0.31 Using ADB flags: Using specified project path: /cygdrive/c/Projects/IDSmart/IDSmartApp/IDSmart Found package name: uk.co.idscan.idsmart ABIs targetted by application: armeabi-v7a Device API Level: 15 Device CPU ABIs: armeabi-v7a armeabi Compatible device ABI: armeabi-v7a Using gdb setup init: ./libs/armeabi-v7a/gdb.setup Using toolchain prefix: /cygdrive/c/Utilities/android-ndk-r8c-windows/android-ndk-r8c/./toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi- Using app out directory: ./obj/local/armeabi-v7a Found debuggable flag: true Found device gdbserver: /data/data/uk.co.idscan.idsmart/lib/gdbserver Found data directory: '/data/data/uk.co.idscan.idsmart' Found running PID: 7922 7922 Killing existing debugging session ## COMMAND: adb_cmd shell kill -9 7864 /system/bin/sh: kill: 7864: Operation not permitted Launched gdbserver succesfully. Setup network redirection ## COMMAND: adb_cmd shell run-as uk.co.idscan.idsmart lib/gdbserver +debug-socket --attach 7922 ## COMMAND: adb_cmd forward tcp:5039 localfilesystem:/data/data/uk.co.idscan.idsmart/debug-socket Attached; pid = 7922 Listening on Unix socket debug-socket ## COMMAND: adb_cmd pull /system/bin/app_process obj/local/armeabi-v7a/app_process 1373 KB/s (9848 bytes in 0.007s) Pulled app_process from device/emulator. ## COMMAND: adb_cmd pull /system/bin/linker obj/local/armeabi-v7a/linker 2147 KB/s (39592 bytes in 0.018s) Pulled linker from device/emulator. ## COMMAND: adb_cmd pull /system/lib/libc.so obj/local/armeabi-v7a/libc.so 2576 KB/s (282316 bytes in 0.107s) Pulled libc.so from device/emulator. 

  • Ressource Android pour un produit spécifique
  • Obtenez la liste des applications capables de gérer l'intention SEND à afficher dans une vue (pas une boîte de dialogue contextuelle)
  • Comment faire une notification push du serveur vers Android
  • Comment utiliser GPUImage sans échelle dans Android
  • ViewFlipper vs AdapterViewFlipper
  • Quel est le format de la caméra Android avec image bruteCallback?
  • One Solution collect form web for “Ne peut pas accéder à la mémoire à l'adresse 0X1 après avoir configuré gdb et eclipse pour déboguer la bibliothèque partagée depuis l'application Android”

     Cannot access memory at address 0x1 

    Affichez votre fichier gdb2.setup, le même que vous utilisez dans eclipse.

    Généralement, ceux-ci ne peuvent pas accéder à la mémoire sont du fait que solib-search-path est incorrect. Essayez d'entrer un chemin absolu vers votre dossier lib de projet dans votre fichier gdb2.setup. Par exemple, je l'ai défini comme suit:

     set solib-search-path D:/android/android-ndk-r8d/samples/hello-jni/obj/local/armeabi 

    Faites-moi savoir si cela vous aide.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.