2010-08-11 14 views
5

Estoy tratando de depurar una compilación de la aplicación con el NDK en un Motorola Droid. Estoy siguiendo las instrucciones here y he tenido éxito en el pasado en un emulador (no tengo acceso root obviamente) pero cuando intento iniciarDepurar código nativo en Motorola Droid

gdbserver :5039 --attach 1082 

través de la cáscara del BAD, puedo obtener una gdbserver:permission denied. Obviamente, como este es un Droid estándar, no tengo acceso de root. ¿Es eso necesario? ¿Me estoy perdiendo algo?

¡Gracias de antemano!

Editar He confirmado que este comando funciona en el emulador. ¿Se puede hacer esto en un dispositivo sin raíz?

Edit 2 También he confirmado los mismos errores Permission Denied en un EVO 4G.

Editar 3 También descubrí que un dispositivo de producción (por ejemplo, EVO 4G o Droid) no me da un error "no encontrado". Por ejemplo, cuando escribí algo al azar como ljs en el shell, obtengo ljs: permission denied. El error es el mismo si el comando existe y no puedo acceder a él (sudo, presumiblemente) o si el comando no existe (ljs).

+0

No estoy seguro ... pero ¿no necesita Android 2.2 para depurar con gdb? ¿Tienes Android 2.2 en tu Droid? – hara

+0

No lo hago y, por lo que recuerdo, las instrucciones gdb/NDK han existido antes de 2.2. ¿Alguien puede confirmar esto? –

+0

Creo que incluso los dispositivos no "rooteados" pueden ejecutar 'su' a través de adb para acceder a los comandos de la consola privilegiada, pero no lo he intentado. Si funciona, avíseme y publicaré una respuesta adecuada. –

Respuesta

2

Si está utilizando el r4 NDK, no debería tener que hacer mucho de esto. En su lugar:

  1. Añadir androide: depurable = "true" en el nodo de la aplicación de ApplicationManifest.xml
  2. Para cualquier nativo (NDK) construido con bibliotecas, repetir # 1 antes de la construcción de ellos (se debe tener en cuenta un poco más de información al compilar donde ndk-build está copiando un archivo gdbserver y gdb.setup)
  3. Arranca $ NDK_ROOT/ndk-gdb con tus opciones deseadas (ej .: comúnmente rompo en Eclipse antes de tocar el código nativo y luego adjunto usando -E opción)
1

veo ninguna referencia a 'localhost' según

 
gdbserver :5039 --attach pid 

en el enlace que has dado - es decir en el teléfono .... Tiene remitió el puerto

 
adb forward tcp:5039 tcp:5039 

desde la estación de trabajo?

también:

 
If you can't find either special version of gdb, run find prebuilt -name 
arm-eabi-gdb in your source tree to find and run the latest version 

¿Ha intentado utilizar "brazo-EABI-BGF lugar, mediante la sustitución del BGF anterior con la versión explícita ....?

+0

Quité el 'localhost' sin suerte.No he probado ninguna de las versiones de gdb en mi host porque no he podido iniciar el servidor en el dispositivo. –

Cuestiones relacionadas