Sto provando a eseguire il debug e passare attraverso un'applicazione Android che segfaults. Ho provato ndk-gdb
, ma con un po 'di fortuna. Ho anche fatto riferimento a Android NDK Debugging senza poter eseguire il debug della mia app.Debug di app native NDK per Android
Quando provo ndk-gdb --start
, e ottengo:
$ ndk-gdb --start --verbose
Android NDK installation path: /opt/android-ndk-r7
Using default adb command: /opt/android-sdk-linux/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.29
Using final ADB command: '/opt/android-sdk-linux/platform-tools/adb'
Using auto-detected project path: .
Found package name: com.example.native_plasma
ABIs targetted by application: armeabi armeabi-v7a
Device API Level: 10
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi-v7a
Found debuggable flag: true
Found device gdbserver: /data/data/com.example.native_plasma/lib/gdbserver
Using gdb setup init: ./libs/armeabi-v7a/gdb.setup
Using toolchain prefix: /opt/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi-v7a
Found data directory: '/data/data/com.example.native_plasma'
Found first launchable activity: android.app.NativeActivity
Launching activity: com.example.native_plasma/android.app.NativeActivity
## COMMAND: /opt/android-sdk-linux/platform-tools/adb shell am start -n com.example.native_plasma/android.app.NativeActivity
Starting: Intent { cmp=com.example.native_plasma/android.app.NativeActivity }
## COMMAND: /opt/android-sdk-linux/platform-tools/adb shell sleep 2
Found running PID: 0
ERROR: Could not extract PID of application on device/emulator.
Weird, this probably means one of these:
- The installed package does not match your current manifest.
- The application process was terminated.
Try using the --verbose option and look at its output for details.
Ciò indica che l'applicazione segfaulted altro meno, ma non so come impostare un punto di interruzione qui dal gdb mai realmente dà un prompt.
Ho provato anche questo comando:
$ ../../toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-addr2line -f -e libs/armeabi/libnative-plasma.so
bedb2330
??
??:0
ho simboli di debug credo.
ndk-build -B V=1 APP_OPTIM=debug
Android.mk
injni/
haLOCAL_CFLAGS := -g
ant debug
ho anche ndk-build NDK_DEBUG=1
ma ho ancora arrivare dove sembra che non ho simboli di debug.
Ecco un'immagine della traccia dello stack. Non c'è niente di più informativo:
non so se vi aiuterà, ma se siete in cerca di un po 'di documentazione (è fuori moda, mente , come si parla di NDK r5b), poi ho scritto una guida alcuni mesi fa che puoi trovare [qui] (http://www.doc.ic.ac.uk/~cb908/AndroidNDK.html).Temo di non poter offrire ulteriori informazioni sul problema, tranne il fatto di controllare che il nome del pacchetto emesso in quel log sia lo stesso di manifest (ma immagino lo sia, dato che ha trovato la directory dei dati e altro) –
Grazie. Sembra che tu abbia usato Eclipse. Sto usando le righe di comando. Spero di non dover usare Eclipse. : \ – Scott
Ah, sì, non ci ho pensato. I principi dovrebbero essere gli stessi - per quanto ne so Eclipse mostra solo l'output gdb e dà a gdb i comandi corretti (ad esempio quando fai clic sul pulsante del passaggio) - quindi no, non devi usarlo. Potresti provare a disattivare le ottimizzazioni in "LOCAL_CFLAGS" (-O0 penso), ma dubito che farà molto. Quanto è lontana nell'app il tuo primo breakpoint? –