2011-02-23 21 views
23

Tenga en cuenta que, a diferencia de muchas otras preguntas que tienen el título del tema "la aplicación se detuvo inesperadamente", no estoy pidiendo que se solucione un problema en particular.La aplicación se detuvo inesperadamente: ¿cómo depurar?

Más bien, estoy pidiendo un resumen de la mejor estrategia para un novato de Android/Eclipse/Java para hacer frente a esta tarea formidable de digerir grandes cantidades de información para desarrollar (¡y depurar!) Una simple aplicación de Android.

En mi caso, tomé la aplicación de esqueleto de muestra del SDK, lo modifiqué ligeramente y ¿qué obtuve en el momento en que traté de ejecutarlo?

La aplicación (process.com.example.android.skeletonapp) ha detenido de forma inesperada. Por favor intente nuevamente.

Bien, entonces sé que tengo que buscar LogCat. Está lleno de líneas con marcas de tiempo mirándome ... ¿Qué hago ahora? ¿Qué debo buscar?

¿Hay alguna manera de hacer un solo paso del programa para encontrar la declaración que hace que la aplicación se bloquee? (Pensé que los programas Java nunca fallaban, pero aparentemente me equivoqué)

¿Cómo coloco un punto de interrupción?

¿Puede recomendar un depurador de Android tutorial en línea, que no sea this one?

+1

Copia y pega las líneas de tu salida de logcat a la pregunta para que la gente pueda ayudarte a orientarte en la dirección correcta. En general, busque la palabra 'Excepción' y una pila de llamadas o cualquier referencia a su aplicación. –

+0

@ typo.pl Gracias, definitivamente haré eso cuando sepa lo que estoy haciendo. En este punto, sin embargo, solo estoy interesado en la metodología como @HappyCodeMonkey y @jqpubliq sugirieron. –

+1

Le di metodología: "salida de logcat: busque la palabra 'Excepción' y una pila de llamadas o cualquier referencia a su aplicación". No pierda el tiempo habilitando/deshabilitando puntos de interrupción en el depurador cuando Android ya le haya dicho dónde está el gran problema en su aplicación: la Excepción y la pila de llamadas son las armas de fuego. –

Respuesta

16

Soy/principiante Android Eclipse también, pero espero que mi sencillo proceso de depuración puedo ayudar ...

establecer puntos de interrupción en Eclipse haciendo clic derecho al lado de la línea que desea romper y seleccionando "Alternar punto de interrupción". A partir de ahí, deberá seleccionar "Depurar" en lugar de la opción "Ejecutar", que le permitirá avanzar, y así sucesivamente. Use los filtros proporcionados por LogCat (referenciados en su tutorial) para que pueda orientar los mensajes que desea en lugar de vadear todos los resultados. Eso (con suerte) hará mucho para ayudarlo a dar sentido a sus errores.

En cuanto a otros buenos tutoriales, yo estaba buscando algunos, pero no pude encontrar gemas todavía.

+0

Esta es una gran respuesta. Intenté hacer clic con el botón derecho al lado de la línea en la que quería romper y seleccionar "Alternar punto de interrupción", pero no pude encontrar ningún elemento del menú. ¿Estás seguro de que no estás confundiendo Eclipse con Visual Studio? :) –

+1

haga clic dentro de un método. El lado izquierdo debe tener un resaltado azul para el alcance de ese método. Ahí es donde haces clic. un doble clic es equivalente – jqpubliq

+1

No, definitivamente Eclipse ... sin embargo, mirándolo de nuevo, ¿es posible que estés haciendo clic en el editor de archivos en lugar del área de color beige justo a la izquierda del editor de archivos? (Por ejemplo, esta es el área donde aparecen las pequeñas advertencias para indicarle que necesita importar un paquete o lo que sea). Me encantaría crear una captura de pantalla si esto no tiene sentido. – HappyCodeMonkey

9

Filtra tu registro a solo error y buscar a excepción grave

+0

Este es un gran consejo. ¡Gracias! (y +1 :) –

4

Si utiliza la pantalla de Logcat dentro de la perspectiva de "depuración" en Eclipse, las líneas tienen un código de color. Es bastante fácil encontrar lo que hizo que tu aplicación fallara porque generalmente está en rojo.

La máquina virtual Java (o Dalvik) nunca debería fallar, pero si su programa arroja una excepción y no la detecta, la VM terminará su programa, que es el 'crash' que está viendo.

+0

+1. Cada consejo cuenta :) –

0

Compruebe si su aplicación tiene la permissions.I necesaria también estaba recibiendo el mismo error y he comprobado el registro de depuración Logcat que mostró esto:

04-15 13:38:25.387: E/AndroidRuntime(694): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:555-555-5555 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44068640 694:rahulserver.test/10055} (pid=694, uid=10055) requires android.permission.CALL_PHONE 

me dio la autorización necesaria en mi android-manifiesta el cual trabajó para mi.

-2
  1. Desde la pantalla de inicio, presione la tecla Menú.
  2. Artículo de la lista
  3. Configuración táctil.
  4. Aplicaciones táctiles.
  5. Toque Administrar aplicaciones.
  6. Toque todo.
  7. Seleccione la aplicación que está teniendo problemas.
  8. Toque Borrar datos y Borrar caché si están disponibles. Esto restablece la aplicación como si fuera nueva y puede eliminar los datos personales almacenados en la aplicación.
+0

Esto no ayudaría a solucionar un problema con una aplicación. Puede ser una solución alternativa para un problema, pero eso no ayuda a determinar qué fue lo que salió mal. – qqx

+0

La pregunta requiere una estrategia para la depuración, no necesariamente para deshacerse del error –

Cuestiones relacionadas