Pregunta

Estoy tratando de depurar una aplicación para Android que llame a código nativo para hacer algo de prestación GL. El código nativo es el código que estoy tratando de puerto (y que no se sabe muy bien que también) existentes. Tengo el código existente compilar, enlazar e instalar correctamente, y tengo algunas funciones nativas que llaman a que el código que se están correctamente llamado de mi código Java. Estoy recibiendo un error de segmentación que estoy tratando de localizar, y tener algunos problemas para conseguir el BGF para establecer un punto de interrupción en el programa. Esto es en Windows XP con Cygwin -. Y probablemente debería mencionar que todavía estoy aprendiendo gdb

Empecé con las direcciones a la http: / /honeypod.blogspot.com/2008/01/debug-native-application-for-android.html ; esto es lo que estoy haciendo actualmente.

Iniciar la aplicación en el emulador.

En un aviso del cmd:

> adb forward tcp:1234 tcp:1234
> adb shell
# gdbserver localhost:1234 --attach 2120
gdbserver localhost:1234 --attach 2120
Attached; pid = 2120
Listening on port 1234

En una cáscara de cygwin:

arm-eabi-4.2.1/bin/arm-eabi-gdb.exe out/apps/app-android/libDM.so
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-cygwin --target=arm-elf-linux"...
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
warning: shared library handler failed to enable breakpoint
0xafe0da04 in AppRefCounted::unref () at ../../stlport/stl/_iosfwd.h:39
39      class basic_ostream;
Current language:  auto; currently c++
(gdb) b Java_com_app_AppRenderer_onCreate
Breakpoint 1 at 0xafff1b1a: file apps/app-android/../../../app-Android/jni/DMJNI/DMInterface.cpp, line 75.
(gdb) c
Continuing.
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0xafff1b1a: Input/Output error.

Así que parece que el punto de corte se ajusta bien, y que los símbolos están bien, pero tal vez la dirección está mal cuando se intenta introducir el punto de interrupción. He intentado varias variaciones de los distintos comandos de la página web mencionada anteriormente, pero hasta ahora, no hubo suerte.

Alguna idea de lo que está pasando?

Gracias

¿Fue útil?

Solución

En esencia, en este punto con NDK 1.6, he descubierto que no sólo no es el soporte para este tipo de depuración estrictamente con el NDK. Sin embargo, si se utiliza la (kit de desarrollo de la plataforma) PDK, se puede hacer este tipo de depuración con código nativo. No hemos probado el PDK, debido a la generación de un archivo de mapa funcionó bastante bien para nosotros (ver esta cuestión de forma ), pero si lo hace ir por ese camino, comprobar el grupo google NDK para más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top