wikiloc trazar rutas recorridos para guardar gratis grabar coche app aplicaciones aplicacion android android-ndk gdb symbols

trazar - ¿Cómo funciona ndk-gdb en Android?



wikiloc (1)

Intento que funcione el depurador NDK pero hasta ahora no ha tenido éxito.

Para asegurarme de que mis símbolos de depuración están presentes y son válidos, utilizo las opciones de compilación -O0 y -g, y el parámetro ndk_DEBUG = 1 de ndk-build.

La secuencia de comandos ndk-gdb se ejecuta sin problemas y ejecuta GDB. Cuando hago un comando "sharedlibrary", obtengo esto:

Symbols already loaded for /bla/bla/libMySharedLib.so

Sin embargo, cuando intento interrumpir la ejecución o, por ejemplo, agregar una segfault para probar, nunca obtengo ninguno de los símbolos de esa biblioteca en la pila de llamadas. Los únicos símbolos que he obtenido son de libc, si rompo la ejecución mientras está esperando un mutex, por ejemplo. También intenté agregar puntos de interrupción sin suerte. GDB me permite agregar los puntos de interrupción, y el código funciona bien, pero los puntos de interrupción nunca se disparan.

Estoy usando API nivel 8 ya que necesito para soportar Android 2.2 (Froyo).


No necesita usar los modificadores -O0 o -g. Necesitas hacer uno de los siguientes:

  1. ponga android:debuggable="true" en la etiqueta <application> en el archivo AndroidManifest.xml
  2. use NDK_DEBUG=1 después de ndk-build
  3. poner APP_OPTIM := debug en el archivo Application.mk

Al hacer cualquiera de estas tres cosas, se usarán automáticamente los interruptores -O0 y -g.

¿Puedes intentar ejecutar gdb manualmente, sin script gdb? Implica los siguientes pasos:

  1. empujar el archivo gdbserver carpeta /data/local en el dispositivo
  2. ejecutar su aplicación e invocar en adb shell siguiendo el comando gdbserver :5055 --attach PID , donde PID es su ID de proceso de la aplicación.
  3. ejecutando adb forward tcp:5055 tcp:5055 en el host
  4. ejecutando arm-linux-androideabi-gdb.exe desde su carpeta de aplicaciones
  5. ingresando los siguientes comandos en gdb
  6. set solib-search-path obj/local/armeabi
  7. file obj/local/armeabi/libMySharedLib.so
  8. target remote :5055

Y mira si puedes depurar entonces.

Si desea ver símbolos para otras bibliotecas compartidas que su biblioteca utiliza como libc.so , extráigalas del dispositivo (desde /system/lib folder) a su carpeta obj/local/armeabi .