2010-08-12 17 views
19

Estoy probando una aplicación de Android con un servicio de larga ejecución. Estoy usando Eclipse y tengo el cable usb conectado con el teléfono que tengo a mi lado. Como se trata de un servicio prolongado, realizo otro trabajo mientras se ejecuta y verifico los registros de logcat de vez en cuando para asegurarme de que todo funcione como se espera.¿Puedo obtener logcat log después de reiniciar el teléfono?

Hace unos minutos noté que el teléfono se estaba reiniciando. Creo que ya lo hice antes, ya que explicaría un comportamiento de aplicación extraño. Rápidamente cambié a Eclipse para ver qué sucedía y descubrí que el registro de logcat estaba (parece) despejado durante el reinicio. Así que no hay ningún registro de si mi aplicación se bloqueó (¿y se cortó el teléfono ?!) o si hubo algún otro problema que provocó la caída del teléfono y mi aplicación.

¿De todos modos puedo averiguar qué sucedió? Este es un teléfono de desarrollo, por lo que no sé si se reinicia/se bloquea a menudo solo o solo mientras mi aplicación se está ejecutando. Es un Motorola Droid que ejecuta Firmware versión 2.1-update1.

Gracias por su ayuda.

+0

http://stackoverflow.com/questions/3361230/android-retrieve-logcat-before-crash-reboot-on-a-real-device Si sabe cómo abrir una consola en su teléfono (lo siento, no) entonces esto podría ayudarte. Puede agregar el parámetro -f y especificar un archivo para que todos los registros se canalicen de modo que pueda obtenerlo después del reinicio. – Mike

+0

Puede que no sea específico para su situación, pero en caso de que ayude a alguien ... He descubierto que usar demasiados recursos de sistema puede provocar reinicios espurios que son difíciles de rastrear a través de registros. Por ejemplo, si tiene algo que generar intenciones pero no las está escuchando (por ejemplo, si su hilo de escucha se bloquea) – Michael

+0

Posible duplicado de [Android: ¿Cómo obtener los registros del kernel después de kernel panic?] (Https://stackoverflow.com/questions/9682306/android-how-to-get-kernel-logs-after-kernel-panic) –

Respuesta

15

No conozco ninguna forma de hacerlo. Sin embargo, puede iniciar logcat en adb con adb logcat -v time > logcat.txt y luego ejecutar su aplicación nuevamente. Si se bloquea por segunda vez, entonces puede ver la salida en logcat.txt en su máquina.

+2

Tenga en cuenta que las escrituras de los archivos se almacenan en el búfer, por lo que las últimas palabras antes del reinicio pueden no eliminarse en el archivo. – adamk

+0

@adamk: También es un buen punto. ¿Hay una manera más limpia de hacer esto (supongo que 'adb bugreport')? – eldarerathis

+1

@eldarerathis: has acertado :) - Lo usé un par de veces, y resultó útil. Por cierto, ejecutar 'adb shell logcat -f file.txt' puede ser mejor (en el sentido del almacenamiento en búfer) que simplemente utilizar el shell, pero es solo una suposición. – adamk

0

Me he encontrado con este problema también. Debería ser posible escribir una aplicación que guarde continuamente la salida de logcat en un archivo en la tarjeta SD. Hay aplicaciones en el mercado que muestran la salida de logcat, por lo que sé que se puede acceder desde una aplicación.

@djv, no pude encontrar un directorio/log en la raíz o/datos en mi teléfono.

+0

Los registros no están al ras ed en el disco en Android ... se almacenan como memorias intermedias circulares. Entonces no persistirán después de que su teléfono se reinicie. –

+0

@AlexLockwood eso no es del todo correcto (nunca más). eche un vistazo a https://stackoverflow.com/a/10525021/529977 '/ data/dontpanic' –

+0

Mi comentario se basó en la información que leí en este libro: http://shop.oreilly.com/product/0636920021094. do Si los registros se escribieron constantemente en los dispositivos de disco funcionarían muy mal. Así que estoy de acuerdo con mi comentario. Además, esta respuesta definitivamente ya no es cierta, ya que las aplicaciones ya no pueden acceder a Logcat desde la API 16. –

10

Puede utilizar adb bugreport, que debe contener alguna información con respecto a un reinicio espuria - por ejemplo, un kernel panic, últimas entradas LogCat etc.

Se advirtió, sin embargo: esta herramienta salidas inmensas cantidades de información, por lo que Tendrás que cavar profundo para encontrar lo que necesitas.

+1

Wow. Eso me dio más de 20,000 líneas. Estoy seguro de que es una gran información, ¡aunque no sé qué hacer con eso! –

+1

@Scott: Comenzaré buscando dentro de la identificación del paquete de su aplicación, etiquetas de registro, etc. para ver si hay algo relacionado con su aplicación. – adamk

+0

Lo estoy viendo ahora. Sin embargo, no veo nada antes del reinicio. Tal vez esperé demasiado tiempo? Han pasado aproximadamente dos horas desde el último reinicio. –

Cuestiones relacionadas