recuperar logcat después de un bloqueo del sistema

¿Es posible recuperar un logcat anterior a un bloqueo del sistema después de que el teléfono se recupere? Es decir, mi teléfono funciona normalmente, luego se bloquea y se reinicia, y quiero ver los registros cuando se recupera para tratar de determinar qué causó el bloqueo. No puedo encontrar ninguna forma de ver logcat en otra cosa que no sea en tiempo real, excepto tener un emulador de terminal ejecutándose y ejecutándose logcat -f logcat.txt V, luego déjelo ejecutándose para siempre. Eso podría generar un archivo masivo que consume todo mi almacenamiento.

No puedo creer que no haya forma de ver un informe de bloqueo, simplemente no puedo entender cómo.

Respuestas (1)

Desafortunadamente logcat no sobrevive a un reinicio completo porque los registros se almacenan en búferes circulares en la memoria y en realidad nunca se escriben en el almacenamiento. Su solución para dejar una sesión de terminal en ejecución puede funcionar, pero como dijo, el archivo puede crecer sin control y, durante un reinicio, puede dañar el archivo de salida. Sugeriría agregar los interruptores -ry -npara que solo se escriban las entradas más recientes:

logcat -r 1024 -n 10 -f /sdcard/logcat.txt &

Esto limita los registros a 10 archivos denominados "logcat.txt", "logcat.txt.2", etc., cada uno de 1 MB de tamaño. Cuando se alcance ese límite, sobrescribirá el primer archivo, y así sucesivamente.

También puede buscar en /proc/last_kmsgel archivo, que almacena los registros del kernel justo antes del último reinicio. Use cat /proc/last_kmsg > /sdcard/last_kmsg.txtel comando para escribir su contenido en un archivo en su almacenamiento.

Lo primero es probablemente la mejor opción. ¿Todavía existe el riesgo de que el último archivo se corrompa en el bloqueo fuerte? Además, ¿siempre se llamará al registro más reciente logcat.txt, con los registros más antiguos incrementando su sufijo, o el registro más nuevo simplemente sobrescribirá al más antiguo y mantendrá el mismo nombre?
El más nuevo siempre se llamará "logcat.txt", y los otros se llamarán .1, .2 y .3. Y sí, siempre existe el riesgo de que el archivo que se está escribiendo actualmente se corrompa en caso de bloqueo.
bueno nuevo tema. Empecé esto desde un shell adb, lo cual es bueno porque se ejecuta en segundo plano. pero accidentalmente puse los archivos de salida en mi tarjeta SD interna en lugar de externa y no puedo encontrar la manera de detener el proceso. Cerré el shell pero el proceso aún se está ejecutando
además, está ciclando a ~ 16 KB y solo almacena 5 archivos
En adb shell, topel comando le dará todos los procesos que se están ejecutando actualmente. Intente matar el proceso llamado "logcat" con el propietario "shell". La sintaxis es adb shell kill NNNNdonde "NNNN" es el ID del proceso (primera columna en top). Además, reiniciar el dispositivo definitivamente lo detendrá :)