2010-07-23 16 views
8

A menudo mis programas simplemente se bloquean. No puedo ver nada en el LogCat o información útil en otro lugar para descubrir qué ha salido mal. Lo único que veo es algún tipo de excepción. Esto es inaceptable y hace que la programación de Android sea casi imposible. Estoy seguro de que debe haber alguna ayuda adicional para la depuración, pero después de semanas de búsqueda, nada.Android Debugging Tips

¿Alguien tiene pistas sobre cómo encontrar un error en un programa que simplemente falla?

Pregunta general Sé, pero sin una respuesta, voy a tener que dejar de intentar desarrollar aplicaciones para Android. No puedo pasar semanas buscando cada error simple.

+1

Gracias, cuando veo una respuesta a algo lo tendré en cuenta. – Mitch

Respuesta

3

También está el depurador de Eclipse real. Si solo ejecuta el programa con el depurador hasta que falle, es posible que no vea un rastro de pila particularmente útil. Pero si agrega un punto de corte o dos en el código que viene justo antes del accidente, puede pasar cuidadosamente y descubrir qué está pasando mal.

Además, aunque todavía soy bastante nuevo en el desarrollo de Android, mi experiencia es que la mayoría de los misteriosos bloqueos en mi código son esencialmente ClassCastException s. Mire cuidadosamente para todos los lugares donde está proyectando algo de una clase a otra, y asegúrese de que no está asumiendo que algo es de un tipo que en realidad no lo es.

+0

Voy a estar pendiente de ClassCastException s, pero no estoy viendo eso en este momento. En general, soy bastante cuidadoso al ser un programador de C++ donde el casting es casi universalmente una mala idea. Pero tendré cuidado de esto. Gracias. – Mitch

+1

En general, también es una mala idea en Java, pero a veces aparece en la programación de Android, como 'textView = (TextView) findViewById (R.id.textview1)' – MatrixFrog

+0

Soy un programador de Android y usamos casting todo el tiempo. A veces, investigar los orígenes de la clase y la información en las páginas de Desarrollador de Android ayuda a comprender a qué se dirige desde/desde (si no es la misma clase). – Azurespot

0

En realidad, no estoy seguro de que esté experimentando un bloqueo normal. Puede ser un ANR o un fenómeno similar que encierra todo. Eso probablemente te haría ver menos registros de tu aplicación. Creo que el soporte de depuración para Android es bastante elegante en comparación con algunos otros entornos con los que he trabajado.

1

Me parece que tiene un error en su instalación de Android en alguna parte. El LogCat a veces se confunde y se desconecta del dispositivo virtual (mencionado aquí: getting blank screen in logcat).

Pero su problema suena mucho más grave. Sé que es un problema, pero considera hacer una nueva instalación de tu sistema de desarrollo Android (incluida una nueva instalación de Eclipse).

He tenido problemas similares, y una nueva instalación ayudó bastante (especialmente después de algunas actualizaciones, las cosas pueden confundirse bastante).

Buena suerte.

1

Esto es un tiro largo total, pero es lo que resultó ser la respuesta para este novato de Android: ¿estás seguro de que tu dispositivo está conectado?

Lo que sucedió en mi caso (que me trajo aquí, pensando que mi aplicación no informaba fallas en LogCat) es que lo que pensé que estaba depurando resultó no ser mi teléfono, sino el emulador de Android que sucedió tener funcionando al mismo tiempo. Cuando me di cuenta de que esto estaba sucediendo, dejé el emulador y el logcat se detuvo.

Cuando me encontré con Logcat de nuevo, resulta que ni siquiera era encontrar mi teléfono:

$ ./adb logcat 
- waiting for device - 

A partir de ahí, tenía que ir a través de algunos aros para conseguir mi teléfono para ser reconocidos, tales como adb not finding my device/phone (MacOS X) y enabling debugging on the phone. Por último, tuve que set android:debuggable=true.

Después de matar a adb y ejecutar Logcat nuevamente, estaba mirando los registros correctos, y podía ver las excepciones de bloqueo.

0

Siga los números rojos.Tendrá que estar a la vista de depuración

1) Haga clic en el caso de que que arrojó la excepción 2) Navegar tot él variables generadas para ese evento 3) Haga clic en la "e" 4) Mira el detailMessage

enter image description here