Logcat se bloquea con error: EOF inesperado


81

Estoy realizando algunos cálculos largos y algo sale mal bastante tarde. Intenté usar puntos de interrupción, pero hasta ahora no tuve éxito. Así que puse en el bucle a Log.dpara monitorear ...

Pero muy pronto, Logcat se bloquea con:

02-08 16:35:42.820 2936-3402/com.nohkumado.geneticsolving.full D/BaseC: 
    norm:BC sq:49.0 dis:0.0 con:50.0/BC sq:56.0 dis:4.0 con:94.0=1.4069148936170213

    read: unexpected EOF!

    --------- beginning of crash

y necesito reiniciar el estudio para que Logcat vuelva a funcionar.

Busqué si podía encontrar alguna configuración para el tamaño del búfer para Logcat, pero hasta ahora no he encontrado nada. ¿Qué se puede hacer?


1
El autor de la pregunta está combinando dos cosas no relacionadas. El mensaje "comienzo del bloqueo" significa que se bloqueó una aplicación de Android, no logcat. El "leer: ¡EOF inesperado!" en realidad proviene del proceso logcat e indica que el proceso logcat perdió su conexión con el proceso logd.
sábado

Bueno, la aplicación no se bloqueó, solo no estaba convergiendo ... pero no pude verla debido a la limitación del búfer del logcat .....
Noh Kumado

Respuestas:


97

Intente configurar los tamaños de búfer de Logger en desactivado en Configuración-> Opciones de desarrollador , en su dispositivo / emulador . Esto podría estar sucediendo porque el búfer del registrador está configurado para mostrar KB limitados de registros solo en un momento determinado. El siguiente conjunto de registros solo se mostrará una vez que se borre el búfer anterior.


2
de hecho, el logcat del lado de la tableta era de longitud fija.
Noh Kumado

9
Lo apagué, ahora no veo ningún registro, en absoluto. (Samsung Note 8). No creo que esta sea una solución para todos
behelit

1
Lo apagué pero todavía aparece el error como abridor de preguntas.
Nisim Naim

esto funcionó para mí (con el emulador). el problema comenzó recientemente.
Lassi Kinnunen

Esta no debería ser una respuesta aprobada, es mejor aumentar el búfer para evitar que se agote en lugar de apagarlo en los dispositivos reales. Aunque puede depender del dispositivo o de la versión del sistema operativo Android.
Sergey Dryganets

131

Respuesta más completa

La respuesta aceptada no funcionó para mí. En lugar de apagar el búfer del registrador, lo aumenté al tamaño máximo.

  1. Habilite las opciones de desarrollador en su emulador o dispositivo ( no en Android Studio ) si aún no se han habilitado: En su emulador o dispositivo, vaya a Configuración> Sistema> Acerca de (dispositivo emulado) y haga clic en el número de compilación 7 veces.
  2. Vaya a Configuración> Sistema> Opciones de desarrollador> Tamaños de búfer del registrador y elija un valor más alto.

ingrese la descripción de la imagen aquí

  1. También tuve que reiniciar el emulador.

Entonces, el problema original aparentemente ocurre porque el búfer de registro del dispositivo se llena para un registro prolongado. Aumentar el tamaño del búfer le permite registrar más en una sola sesión de registro.


1
Usando esto puedo evitar el problema en un día laboral normal. Hay una excepción para mí: usar un teléfono Samsung en un entorno con muchos dispositivos Bluetooth. Samsung decidió registrar cada escaneo de Bluetooth en el nivel del sistema y aparentemente 16M no es suficiente para esto. Todavía sucederá como 4 o 5 veces al día cuando tenga más de 30 dispositivos Bluetooth a mi alrededor.
reTs

El búfer de logd es un búfer de anillo, cambiar su tamaño no debería tener un impacto medible en si se pierde la conexión entre logcat y logd. Todo lo que hace es cambiar la cantidad de historial de registro que se encuentra en la memoria. Es muy poco probable que esto solucione el problema.
sábado,

1
@ satur9nine, no puedo decir si soluciona el problema en el nivel subyacente, pero solucionó mi problema porque evitó el bloqueo y permitió que se mostraran más mensajes de registro.
Suragch

Después de transferir una copia de seguridad TWRP de un Moto G5 Plus a otro, mi búfer logcat consistió en algunos eventos de hace meses, algunos eventos de hoy, seguidos de read: unexpected EOF!. El aumento a 16M solucionó el problema e hizo desaparecer los eventos de hace meses.
nyanpasu64

16

En las opciones de desarrollador, puede establecer el tamaño del búfer del registrador en un máximo de 16M.
(Configuración> Sistema> Opciones de desarrollador> Tamaños de búfer del registrador)

Si necesita más, puede configurarlo usando adb. Por ejemplo, puede configurarlo en 100M:

adb logcat -G 100M

6

Este registro que publicó indica que la aplicación se bloquea (aunque no de la manera habitual con un seguimiento de pila, pero se bloquea), no el logcat. ¿Tiene la aplicación seleccionada y el filtro configurado para "Mostrar la aplicación seleccionada" en el logcat? Si es así, configure el filtro en "Sin filtro" y verá todos los registros de su aplicación.

Además, en caso de que necesite reiniciar el logcat por cualquier motivo, en lugar de reiniciar Android Studio, puede ejecutar los siguientes comandos que reiniciarán adb y eventualmente reiniciarán su logcat también:

adb kill-server
adb start-server

eso es extraño, porque la aplicación parece seguir funcionando? Estoy seguro sobre el cálculo en sí (de ahí mi deseo de depurarlo) pero el resto funciona, ¿hacer clic en los botones, etc., sigue produciendo el comportamiento esperado? el truco adb restauró el logcat, desafortunadamente se salta luego al punto de tiempo real ...
Noh Kumado

Pensé a qué te referías con cálculos prolongados y luego algo sale mal, lo que significa que la aplicación probablemente se está quedando atrás o no responde y luego se bloquea. ¿La aplicación está compuesta por múltiples actividades? Y cuando ocurre el error, ¿es como volver a una actividad anterior? Ningún filtro no muestra todos los registros, ¿verdad?
ahasbini

No, la aplicación funciona sin problemas, son los resultados que en algún momento se desvían de lo esperado, sí, varias actividades y los hilos de trabajo se realizan con tareas asíncronas, y no después de ese mensaje de bloqueo, logcat permanece insípido para todo ....
Noh Kumado

3

Si está ejecutando desde un teléfono real, desconecte y conecte el teléfono desde el usb funcionó para mí (el búfer se vacía, como sugirió @Suragch).


2

Cambiar el tamaño del búfer no funcionó para mí. Lo que hizo fue cambiar mi conexión USB a un puerto USB 3.0.


1
¡Maravilloso! Gracias por esta pista. Tuve el mismo problema.
Ethan Leroy

En la misma línea, también elimine cualquier concentrador USB que se encuentre entre su dispositivo y su computadora y / o pruebe diferentes puertos USB en su computadora.
Satur9nine


1

¡Reinicia tu dispositivo! No tengo idea de por qué me funciona después de reiniciar mi teléfono móvil.


0

Simplemente vaya a Archivo -> Invalidar cachés / Reiniciar permitirá que Android Studio haga el trabajo


No creo que esto ayude con el problema en sí, pero el reinicio de AS reiniciará logcat, aparentemente solucionando el problema.
PNDA

@PNDA, ¿por qué no dejar que Android valide sus cachés y lo reinicie por usted? No veo dónde está la desventaja
Anónimo-E

0

Desafortunadamente, esto parece ser un problema, no pude encontrar una solución satisfactoria además de instalar un complemento ( Archivo -> Configuración -> Complementos -> Marketplace ) llamado " Visor de registro ". Funciona mejor que el visor logcat integrado de Android Studio.


0

Las recomendaciones no funcionaron para mí. Finalmente cambié esta configuración de preferencia:

Menú "Ejecutar", Entrada de menú "Editar configuraciones", luego en el lado izquierdo "Aplicación / aplicación Android" y en el lado derecho la pestaña "Michelangelo", y finalmente active "Logcat: Borrar registro antes del lanzamiento".

Por supuesto, esto tiene efectos secundarios, pero al menos puedo ver la salida del registro nuevamente.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.