2011-05-31 19 views
9

Estoy desarrollando una aplicación de Android utilizando algunas bibliotecas compartidas escritas por mí y compiladas con ndk-r5b. La aplicación funciona, y y las llamadas a las bibliotecas también funcionan, pero detecté algunos errores, fallas de segmentación, y necesito depurarlo, pero no sé cómo depurar código nativo de android y no lo hago Saber si puedo generar volcados del núcleo, como en Linux, para depurar mis bibliotecas.Generar volcado del núcleo en Android

¿Alguna idea?

Respuesta

5

El ndk viene con ndk-gdb, que supuestamente le permite depurar aplicaciones nativas. Además, si descarga todo el proyecto de fuente abierta de andriod, también tienen alguna versión de gdb utilizada para la depuración. Busque en la carpeta docs/del ndk para aprender sobre su uso. Este tutorial también podría ser útil: http://vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/

Sin embargo, como se muestra en una pregunta reciente, pregunté: Running ndk-gdb with package not found error on motorola phone Todavía no puedo hacer que funcione.

Editar: Usted dijo en los comentarios que estaba usando un dispositivo Samsung: Samsung decidió causar estragos en algunos de los aspectos internos necesarios para la depuración nativa, pero es fácilmente reparable si tiene acceso de root al dispositivo. Si usa el indicador --verbose, probablemente encontrará que el error es diferente a eso, un paquete desconocido. Esto se debe a que está buscando en /data/system/packages.list, pero Samsung cambió el nombre de ese archivo a /dbdata/system/packages.list. Entonces, si hace un enlace simbólico a ese archivo en /data/system/packages.list, (requiere acceso de root) debería funcionar. O por lo menos así afirma la lista de correo NDK: http://osdir.com/ml/android-ndk/2011-03/msg00036.html

+0

Gracias Leif, sé que NDK-BGF existe pero siempre me sale el mismo error ... "Podría ni redirección de red de configuración para gbdserver usando Tal --port? = para utilizar un puerto TCP diferente ¿podría ayudar? "... y no puedo resolverlo. Estoy depurando en una ficha de Samsung GT p1000 – Chris

+0

Ah, está bien. Samsung decide causar estragos en algunos de los aspectos internos cruciales necesarios para la depuración nativa, pero es fácilmente reparable si tiene acceso de root al dispositivo. Si usa el indicador --verbose, probablemente encontrará que el error es diferente a eso, un paquete desconocido. Esto se debe a que está buscando en /data/system/packages.list, pero Samsung cambió el nombre de ese archivo a /dbdata/system/packages.list. Por lo tanto, si crea un enlace simbólico a ese archivo en /data/system/packages.list, (requiere acceso raíz), * debería * funcionar. –

+0

Aquí es donde creo que obtuve esa respuesta de: http://osdir.com/ml/android-ndk/2011-03/msg00036.html –

Cuestiones relacionadas