Logcat ulega awarii z błędem: nieoczekiwany EOF


87

Wykonuję długie obliczenia i coś idzie nie tak dość późno. Próbowałem użyć punktów przerwania, ale jak dotąd bezskutecznie. Więc wrzuciłem w pętlę Log.ddo monitorowania ...

Ale wkrótce Logcat ulega awarii z:

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

i muszę ponownie uruchomić studio, aby ponownie uruchomić Logcat.

Szukałem, czy mogę znaleźć jakieś ustawienie rozmiaru bufora dla Logcat, ale jak dotąd nic nie znalazłem. Co można zrobić?


1
Pytający łączy dwie niezwiązane ze sobą rzeczy. Komunikat „początek awarii” oznacza awarię aplikacji na Androida, a nie logcat. Komunikat „Przeczytaj: nieoczekiwany EOF!” faktycznie pochodzi z procesu logcat i wskazuje, że proces logcat utracił połączenie z procesem logd.
satur9nine

Cóż, aplikacja nie uległa awarii, tylko nie była zbieżna ... ale nie mogłem jej zobaczyć z powodu ograniczenia bufora
logcata

Odpowiedzi:


100

Spróbuj wyłączyć rozmiary buforów Loggera w obszarze Ustawienia-> Opcje programisty na swoim urządzeniu / emulatorze . Może się tak dziać, ponieważ bufor programu Logger jest skonfigurowany do wyświetlania ograniczonych KB dzienników tylko w określonym czasie. Następny zestaw dzienników byłby wyświetlany dopiero po wyczyszczeniu poprzedniego bufora.


2
rzeczywiście, logcat na boku tabletu miał stałą długość!
Noh Kumado,

10
Wyłączyłem to, teraz w ogóle nie widzę żadnych logów. (Samsung Note 8). Nie sądzę, żeby to było rozwiązanie dla wszystkich
behelit

1
Wyłączyłem go, ale nadal otrzymuję błąd jako otwieracz pytań.
Nisim Naim

to działało dla mnie (z emulatorem). problem zaczął się niedawno.
Lassi Kinnunen

To nie powinna być zatwierdzona odpowiedź, lepiej jest zwiększyć bufor, aby zapobiec jego wyczerpaniu, zamiast wyłączać go na prawdziwych urządzeniach. Chociaż może to zależeć od urządzenia / wersji systemu operacyjnego Android.
Sergey Dryganets

138

Pełniejsza odpowiedź

Przyjęta odpowiedź nie zadziałała dla mnie. Zamiast wyłączyć bufor rejestratora, zwiększyłem go do maksymalnego rozmiaru.

  1. Włącz opcje programisty w swoim emulatorze lub urządzeniu ( nie w Android Studio ), jeśli nie zostały jeszcze włączone: W emulatorze lub urządzeniu przejdź do Ustawienia> System> Informacje (urządzenie emulowane) i kliknij numer kompilacji 7 razy.
  2. Przejdź do Ustawienia> System> Opcje programisty> Rozmiary buforów rejestratora i wybierz wyższą wartość.

wprowadź opis obrazu tutaj

  1. Musiałem też zrestartować emulator.

Więc pierwotny problem najwyraźniej występuje, ponieważ bufor dziennika urządzeń zostaje zapełniony w celu długotrwałego rejestrowania. Zwiększenie rozmiaru bufora umożliwia rejestrowanie większej liczby danych w jednej sesji rejestrowania.


1
Dzięki temu mogę uniknąć problemu w normalnym dniu pracy. Dla mnie jest wyjątek: używanie telefonu Samsung w środowisku z wieloma urządzeniami Bluetooth. Samsung postanowił rejestrować każde skanowanie Bluetooth na poziomie systemu i najwyraźniej 16M to za mało. Nadal będzie się to zdarzać 4 lub 5 razy dziennie, gdy wokół mnie będzie ponad 30 urządzeń Bluetooth.
reTs

Bufor logd jest buforem pierścieniowym, zmiana jego rozmiaru nie powinna mieć wymiernego wpływu na utratę połączenia między logcat i logd. Wszystko, co robi, to zmiana ilości historii rejestrowania przechowywanej w pamięci. Jest bardzo mało prawdopodobne, aby to rozwiązało problem.
satur9nine

1
@ satur9nine, nie mogę powiedzieć, czy rozwiązuje problem na podstawowym poziomie, ale naprawił mój problem, ponieważ zapobiegał awarii i pozwalał na wyświetlanie większej liczby komunikatów dziennika.
Suragch

Po przeniesieniu kopii zapasowej TWRP z jednego Moto G5 Plus do drugiego, mój bufor logcat składał się z niektórych wydarzeń sprzed miesięcy, z dzisiejszych, a następnie read: unexpected EOF!. Zwiększenie do 16 mln rozwiązało problem i sprawiło, że wydarzenia sprzed miesięcy zniknęły.
nyanpasu64

18

W opcjach programisty można ustawić rozmiar bufora Loggera na maksymalnie 16M.
(Ustawienia> System> Opcje programisty> Rozmiary buforów rejestratora)

Jeśli potrzebujesz więcej, możesz to ustawić za pomocą adb. Na przykład możesz ustawić go na 100 M:

adb logcat -G 100M

7

Ten opublikowany przez Ciebie dziennik wskazuje awarię aplikacji (chociaż nie w zwykły sposób ze śledzeniem stosu, ale powoduje awarię), a nie logcat. Czy masz wybraną aplikację i ustawiłeś filtr na „Pokaż wybraną aplikację” w logcat? Jeśli tak, po prostu ustaw filtr na „Brak filtru”, a zobaczysz wszystkie dzienniki aplikacji.

Również w przypadku konieczności ponownego uruchomienia logcata z dowolnego powodu, zamiast ponownego uruchamiania Android Studio, można uruchomić następujące polecenia, które zrestartują adb i ostatecznie zrestartują również logcat:

adb kill-server
adb start-server

to dziwne, ponieważ aplikacja wydaje się nadal działać? jestem pewien co do samego obliczenia (stąd moje życzenie debugowania), ale reszta działa, klikanie przycisków itp. nadal daje oczekiwane zachowanie? sztuczka adb przywróciła logcat, niestety przeskakuje wtedy do rzeczywistego punktu czasowego ...
Noh Kumado,

Pomyślałem, co masz na myśli przez długie obliczenia, a potem coś idzie nie tak, co oznacza, że ​​aplikacja prawdopodobnie zaczyna się opóźniać lub nie reaguje, a następnie ulega awarii. Czy aplikacja składa się z wielu czynności? A kiedy wystąpi błąd, czy jest to powrót do poprzedniej czynności? Żaden filtr nie wyświetla wszystkich dzienników, prawda?
ahasbini

Nie, aplikacja działa płynnie, jej wyniki w pewnym momencie odbiegają od oczekiwanych, tak, kilka działań i wątki
robocze

3

Jeśli korzystasz z prawdziwego telefonu - odłącz i podłącz telefon z usb działał u mnie (bufor się opróżnia - jak sugerował @Suragch).


2

Zmiana rozmiaru bufora nie działa dla mnie. Zmieniłem połączenie USB na port USB 3.0.


1
Wspaniale! Dziękuję za tę wskazówkę. Miałem ten sam problem.
Ethan Leroy

W tym samym duchu usuń również wszelkie koncentratory USB znajdujące się między urządzeniem a komputerem i / lub wypróbuj różne porty USB w komputerze.
satur9nine


1

Zrestartuj swoje urządzenie! Nie mam pojęcia, dlaczego to działa u mnie po ponownym uruchomieniu telefonu komórkowego.



0

Niestety, wydaje się, że to nadal problem, nie mogłem znaleźć satysfakcjonującego rozwiązania poza instalacją wtyczki ( Plik -> Ustawienia -> Wtyczki -> Rynek ) o nazwie „ Przeglądarka dziennika ”. Działa lepiej niż wbudowana przeglądarka logcat w Android Studio.


0

Zalecenia nie zadziałały dla mnie. W końcu zmieniłem to ustawienie preferencji:

Menu „Uruchom”, Wpis w menu „Edytuj konfiguracje”, następnie po lewej stronie „Aplikacja / aplikacja na Androida” i po prawej stronie zakładka „Michelangelo”, a na końcu aktywuj „Logcat: wyczyść dziennik przed uruchomieniem”.

Oczywiście ma to skutki uboczne, ale przynajmniej widzę ponownie dane wyjściowe dziennika.


-1

Po prostu przejdź do Plik -> Unieważnij pamięć podręczną / Uruchom ponownie, co pozwoli Android Studio wykonać zadanie


Nie sądzę, żeby to pomogło w rozwiązaniu samego problemu, ale restart AS zrestartuje logcat, najwyraźniej naprawiając problem.
PNDA

@PNDA dlaczego nie pozwolić Androidowi zweryfikować pamięci podręcznej i zrestartować go za Ciebie? Nie widzę, gdzie jest wada
Anonymous-E
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.