7 votos

¿Cómo saber por qué se bloquea una aplicación?

Regularmente obtengo el infame y poco útil "desafortunadamente la crappyApp ha dejado de funcionar". ¿Cómo averiguar qué es lo que realmente ha fallado? Supongo que hay un seguimiento de la pila en alguna parte, aunque lo ideal sería modificar el mensaje inútil en sí, si es posible en un dispositivo rooteado.

0 votos

Para empezar, tenemos el solución de problemas tag-wiki ;)

4voto

Simplemente puedes ver el rastro de la pila de fallos después de que ocurra cualquier fallo. Utiliza el comando ADB que aparece a continuación,

adb logcat -b crash #default
adb -d logcat -b crash #show from device when multiple device
adb -s logcat -b crash #show from simulator when multiple device

2voto

Izzy Puntos 45544

Hay múltiples formas de obtener información útil. Pero como Dan señaló Las soluciones en el dispositivo requerirán Root (a partir de JellyBean) - y las soluciones fuera del dispositivo ADB:

  • adb logcat ya se describió en La respuesta de Dan . Para más detalles, puede consultar nuestro registro etiqueta-wiki .
  • adb bugreport > report.txt ofrece información muy detallada, incluyendo detalles de la dumpsys , dumpstate y logcat herramientas. Se pueden encontrar varias herramientas para facilitar el análisis de sus resultados, por ejemplo, en las respuestas a ¿Mejor método para ver la salida de "adb bugreport"? en nuestro sitio web.
  • hay herramientas que se instalan en su ordenador que utilizan lo anterior (o al menos partes de ello), como QtADB (para Linux, Mac y Windows)
  • hay aplicaciones para Android como Reportero de insectos ; pero como se ha señalado, la mayoría de ellos requerirán Root. Lector de informes de errores Sin embargo, afirma que leer los registros del sistema (logcat, dumpsys, dmesg, top y mucho más) en su dispositivo, sin Root Así que podría valer la pena intentarlo.

1voto

Andy Brudtkuhl Puntos 1714

En la mayoría de los casos, si la depuración USB está activada, puede utilizar adb logcat para ver la salida de la excepción. Esto suele incluir un seguimiento de la pila, pero no suele ser útil a menos que tengas el código fuente de la aplicación. De todos modos, el desarrollador de la aplicación probablemente te agradecerá que lo incluyas en cualquier informe de error.

1 votos

Gracias, preferiría una solución nativa directamente en el dispositivo si es posible. buen punto sobre la utilidad, ¿el rastreo no incluye al menos excepciones de java con nombre sensato? o dalvik las ofusca?

0 votos

Existen aplicaciones para leer el registro desde el dispositivo (busque en Google Play logcat ), pero en Jelly Bean y posteriores, las aplicaciones no pueden leer los registros de las demás, por lo que es posible que tengas que rootear tu dispositivo para hacerlo. La traza incluye los nombres de las excepciones de Java, pero NullPointerException realmente no te dice mucho a menos que seas el desarrollador de la aplicación.

1 votos

Buen punto sobre esa excepción :/ ya que rooteé mi dispositivo de todos modos, esperaba una forma más cómoda que logcat, aunque eso es mejor que nada...

0voto

Sudo SU Root Puntos 51

Lea los archivos en /data/anr/ que significa "aplicaciones que no responden". Yo uso adb shell cat /data/anr/$FILE

Habrá uno por cada aplicación que se cierre a la fuerza, o que no responda por alguna razón.

1 votos

Al mirar /data/anr/ en un explorador de archivos Root, sólo hay un único traces.txt que se modificó hace tres días (aunque una aplicación se ha bloqueado hoy), y parece que sólo contiene fallos del sistema, no fallos de la aplicación. ¿Hay alguna otra forma de ver esos backtraces de las aplicaciones?

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X