Estoy tratando de depurar y pasar por una aplicación de Android que segfaults. Lo intenté ndk-gdb
, pero con poca suerte. También me he referido al Android NDK Debugging sin poder depurar mi aplicación.Depuración de aplicaciones nativas Android NDK
cuando intento ndk-gdb --start
, y me sale:
$ 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.
Esto indica que la aplicación segfaulted más menos, pero no saben cómo establecer un punto de interrupción aquí desde BGF en realidad nunca da un aviso.
También probé este 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
tengo símbolos de depuración, creo.
ndk-build -B V=1 APP_OPTIM=debug
Android.mk
enjni/
tieneLOCAL_CFLAGS := -g
ant debug
También he ndk-build NDK_DEBUG=1
pero todavía consigo donde parece que no tengo los símbolos de depuración.
Aquí hay una imagen del seguimiento de la pila. No hay nada más informativo:
no sé si ayudará, pero si usted está buscando algún tipo de documentación (que está fuera de fecha, la mente , ya que habla de NDK r5b), entonces escribí una guía hace unos meses que puedes encontrar [aquí] (http://www.doc.ic.ac.uk/~cb908/AndroidNDK.html).Me temo que no puedo ofrecer más información sobre el problema, excepto para comprobar que el nombre del paquete que se publicó en ese registro es el mismo que en el manifiesto (pero me imagino que sí, ya que encontró el directorio de datos y esas cosas) –
Gracias. Parece que usaste Eclipse. Estoy usando líneas de comando. Espero no tener que usar Eclipse. : \ – Scott
Ah, sí, no pensé en eso. Los principios deben ser los mismos: por lo que sé, Eclipse solo muestra la salida de gdb, y le da a gdb los comandos correctos (por ejemplo, cuando hace clic en el botón de paso), así que no, no es necesario que lo use. Puedes intentar desactivar las optimizaciones en 'LOCAL_CFLAGS' (-O0, creo), pero dudo que haga mucho. ¿Cuán lejos en la aplicación está tu primer punto de quiebre? –