Cómo obtener ndk-gdb trabajando en Android?
Estoy tratando de conseguir el depurador NDK trabajando, pero sin éxito hasta ahora.
Para asegurarme de que mis símbolos de depuración están presentes y son válidos, utilizo las opciones -O0 y -g del compilador y el parámetro NDK_DEBUG = 1 de la compilación ndk.
- Android Native debug (ndk-gdb) en HTC Desire: run-as defecto?
- Run-as El paquete 'abc' es desconocido - Galaxy S4 Jellybean o Android 4.3
- Gdb depura el programa nativo (no jni) en android
- Error de depuración ADT20 NDK
- ¿Cómo depurar un ejecutable de Dalvik en Android con GDB?
El script ndk-gdb se ejecuta sin problemas y lanza GDB. Cuando hago un comando "sharedlibrary", consigo esto:
Symbols already loaded for /bla/bla/libMySharedLib.so
Sin embargo, cuando intento romper la ejecución o, por ejemplo, agregar un segfault a prueba, nunca obtengo ninguno de los símbolos de esa biblioteca en la pila de llamadas. Los únicos símbolos que he conseguido son de libc, si rompo la ejecución mientras que está esperando un mutex por ejemplo. También intentó añadir puntos de interrupción sin suerte. GDB me permite añadir los puntos de interrupción, y el código funciona bien, pero los puntos de interrupción nunca se activan.
Estoy utilizando el nivel 8 de la API, ya que necesito para apoyar a Android 2.2 (Froyo).
¿Qué estoy haciendo mal?
Gracias por tu tiempo.
- run-as El paquete 'abc' es desconocido - Galaxy S4 Jellybean o Android 4.3
- Ejecución de ndk-gdb con error de paquete no encontrado en el teléfono Motorola
- La salida de gdb remota de Android es dolorosamente lenta
- Cómo depurar la implementación NFC de Android?
- Depuración NDK de Android
- Ndk-gdb error: el dispositivo no admite las ABI de CPU de la aplicación
- Gdb Error de entrada / salida de depuración remota a Android
- Depuración nativa de Android, bibliotecas ndk-gdb no encontradas
No es necesario utilizar los modificadores -O0 o -g. Debe realizar una de las siguientes acciones:
- Poner
android:debuggable="true"
a la etiqueta<application>
en el archivoAndroidManifest.xml
- Utilice
NDK_DEBUG=1
después de ndk-build - Poner
APP_OPTIM := debug
en el archivo Application.mk
Hacer cualquiera de estas tres cosas usará automáticamente los modificadores -O0 y -g.
¿Puedes intentar ejecutar gdb manualmente, sin script gdb? Implica los siguientes pasos:
-
gdbserver
archivogdbserver
a/data/local
folder en el dispositivo -
gdbserver :5055 --attach PID
su aplicación y invocando en el comando deadb shell
gdbserver :5055 --attach PID
, donde PID es su id de proceso de aplicación. -
adb forward tcp:5055 tcp:5055
en host -
arm-linux-androideabi-gdb.exe
desde la carpeta de tu aplicación - Introducir los siguientes comandos en gdb
-
set solib-search-path obj/local/armeabi
-
file obj/local/armeabi/libMySharedLib.so
-
target remote :5055
Y ver si puedes depurar entonces.
Si desea ver símbolos para otras bibliotecas compartidas, su librería está usando libc.so
, luego jale desde el dispositivo (de la carpeta /system/lib
) a su carpeta obj/local/armeabi
.
- Diseño de tabla XML? ¿Dos filas de la misma anchura con botones de igual anchura?
- Cómo dibujar Arco entre dos puntos en el lienzo?