2013-01-19 1 views
11

Ich habe zwei Android-Projekte: eines ist eine Bibliothek und das andere eine regelmäßige Anwendung mit dieser Bibliothek. Mein Ziel ist es, die gemeinsame Bibliothek von der Android-Anwendung zu debuggen. Ich folgte diesem Leitfaden:kann nicht auf Speicher an Adresse 0X1 zugreifen, nachdem ich gdb und eclipse eingerichtet habe, um gemeinsame Bibliothek von Android-Anwendung zu debuggen

http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-debugging/

Und ich aus der letzten Zeile kommentiert

##$GDBCLIENT -x `native_path $GDBSETUP` 

Aber die folgende Zeile

##cp -f $GDBSETUP_INIT $GDBSETUP 

mit der Meldung klagt:

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

Also habe ich es auskommentiert, da ich denke, Eclipse wird es für mich hochgeladen. Außerdem habe ich darauf geachtet, dass:

  • In beiden Android.mk ich LOCAL_CFLAGS setzen: = -Wall -g

  • Ich erhalte die .so in der Libs Bibliothek der Anwendung

  • I debug wahr in der Anwendung

  • der gdb2.setup Weg, um sowohl solib-Suchpfad ./libs/armeabi-v7a/ und die Quelle mit auf die .so verweisen geändert gemacht wird verwiesen erhalten Verzeichnis mit

Nachdem er in der System.loadLibrary Anweisung Schritt ausgeführt ich NDK-build-Eklipse und es wurden keine Fehler produziert und als ich nativ bekam Debuggen begann ich:

Kein Zugriff auf Speicher an der Adresse 0x1

und auf Cygwin ich habe:

Remote-Debugging von Host 0.0.0.0

Hier ist der Ausgang der laufenden NDK-GDB-Eclipse-Befehl:

$ ./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. 

Antwort

0
Cannot access memory at address 0x1 

Post gdb2.setup Datei, die gleiche, die Sie in Eclipse verwenden.

In der Regel können diese nicht auf Speicher zugreifen, weil solib-search-path inkorrekt ist. Versuchen Sie, den absoluten Pfad zu Ihrem Projekt-lib-Ordner in Ihrer gdb2.setup-Datei einzugeben. Zum Beispiel habe ich es als gesetzt:

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

Lassen Sie mich wissen, wenn es hilft.

+0

Hatte das Problem aber gefunden, dass die meine gdb.setup hat: set solib-search-path ./obj/local/arm64-v8a, die die .so enthält, dass ich die Symbole brauche. Muss es hier den Bauchweg benutzen? – kakyo

Verwandte Themen