2012-05-24 10 views
5

He creado un archivo binario excutable a partir de código C++ puro e indica un error de tiempo cuando se ejecuta en un dispositivo Android.cómo depurar código nativo puro en android?

¿Cómo puedo depurar el código nativo puro para android? Parece que los métodos existentes no son para código nativo puro.

+0

Le recomiendo que lea http://stackoverflow.com/questions/how-to-ask y trate de preguntar de nuevo para mejorar nuestra capacidad de ayudarlo a obtener una respuesta. –

+0

Gracias. He encontrado la solución. Publique aquí y espero que pueda ayudar a otros a preocuparse por este problema. – behe

Respuesta

0

Android admite el uso de GDB. Sin embargo, debería tener en cuenta que si por "C++ puro" quiere decir que no hay Java en absoluto en la aplicación, técnicamente no está permitido (aunque definitivamente puede hacerlo). Ver the NDK page.

3

Paso 1: Coloque elgdbserver y su sin pelarejecutable binario nativo (supongo que se llama testexec) en el emulador de Android. P.ej. puedes ponerlo en carpeta/datos/datos/prueba. Y use el comando chmod para agregarles permisos.

Paso 2: Inicie el depurador de gdb. Y este paso consiste en la siguiente sub-etapas:

Paso 2.1: Iniciar depurador GDB del emulador tecleando comandos en el terminal de la máquina host:

adb shell /data/data/test/gdbserver 10.0.2.2:1234 /data/data/test/testexec 

El emulador entonces escuchar en el puerto 1234.

Paso 2.2: Conectar el depurador gdb de la máquina local con el gdbserver del emulador:

telnet localhost 5554 

Se le pedirá:

Android Consola: Tipo de 'ayuda' para obtener una lista de comandos

OK

Luego de entrada:

redir add tcp:1234:1234 

para habilitar la redirección de datos y luego escriba

exit 

Paso2.3: Inicie el depurador gdb de la máquina local. Entrada:

arm-linux-androideabi-gdb.exe YOUR_ EXECUTABLE_PATH_ON_LOCAL_MACHINE\testexec 

Después de eso, de entrada

target remote localhost:1234 

para conectarse a la gdbserver.

¡Finalmente, disfrute de su depuración!

+0

¿Sabría cómo conectarse con telnet a un dispositivo real, no un emulador? estaba tratando de consultar la ip con 'adb shell ip -f inet addr show' pero no puedo conectarme – Chris

Cuestiones relacionadas