Logcat аварійно завершує роботу: несподіваний EOF


87

Я виконую довгі обчислення, і щось піде не так пізно. Я намагався використовувати точки зупинку, але поки що успіху не було. Тому я ввів у цикл a Log.dдля моніторингу ...

Але досить скоро Logcat аварійно завершує роботу з:

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

і мені потрібно перезапустити студію, щоб Logcat знову запустився.

Я подивився, чи можу я знайти якесь налаштування розміру буфера для Logcat, але поки що я нічого не знайшов. Що можна зробити?


1
Запитувач поєднує дві непов’язані речі. Повідомлення "початок збою" означає, що програма Android розбилася, а не logcat. "Читання: несподіваний EOF!" насправді походить від процесу logcat, і це вказує на те, що процес logcat втратив зв’язок із процесом logd.
satur9nine

Ну, додаток не вийшов з ладу, він лише не сходився .... але я не міг його побачити через обмеження буфера в logcat .....
Но Кумадо

Відповіді:


100

Спробуйте вимкнути розміри буфера реєстратора в розділі Налаштування-> Параметри розробника на вашому пристрої / емуляторі . Це може трапитися, оскільки буфер реєстратора налаштований на відображення обмежених КБ журналів лише в певний час. Наступний набір журналів відображатиметься лише після очищення попереднього буфера.


2
справді, logcat на стороні планшета був фіксованої довжини!
Но Кумадо

10
Я його вимкнув, тепер я взагалі не бачу журналів. (Samsung Примітка 8). Я не вважаю, що це рішення для всіх
звільнив

1
Я вимкнув його, але все одно отримав помилку як відкривач запитань.
Nisim Naim

це працювало у мене (з емулятором). випуск розпочався зовсім недавно.
Лассі Кіннунен

Це не повинна бути схваленою відповіддю, краще збільшити буфер, щоб запобігти його виснаженню, замість того, щоб вимикати його на реальних пристроях. Хоча це може залежати від пристрою / версії ОС Android.
Сергій Дриганець

138

Повніша відповідь

Прийнята відповідь для мене не спрацювала. Замість того, щоб вимикати буфер реєстратора, я збільшив його до максимального розміру.

  1. Увімкніть параметри розробника у вашому емуляторі або на пристрої ( не в Android Studio ), якщо це ще не було ввімкнено: у вашому емуляторі або на пристрої перейдіть до Налаштування> Система> Про (емуляція пристрою) та натисніть номер збірки 7 разів.
  2. Перейдіть до Налаштування> Система> Параметри розробника> Розміри буфера реєстратора та виберіть більше значення.

введіть тут опис зображення

  1. Мені також довелося перезапустити емулятор.

Отже, оригінальна проблема, очевидно, трапляється через те, що буфер журналу пристроїв заповнюється для тривалого реєстрації. Збільшення розміру буфера дозволяє реєструвати більше за один сеанс ведення журналу.


1
Використовуючи це, я можу уникнути проблеми у звичайний робочий день. Для мене є виняток: використання телефону Samsung в середовищі з великою кількістю пристроїв Bluetooth. Samsung вирішив реєструвати кожне сканування Bluetooth на системному рівні, і, мабуть, 16 М для цього недостатньо. Це все одно відбуватиметься 4–5 разів на день, коли навколо мене понад 30 пристроїв Bluetooth.
reTs

Буфер logd є кільцевим буфером, зміна його розміру не повинно мати ніякого вимірюваного впливу на те, чи втрачається зв’язок між logcat та logd. Все, що він робить, це змінювати, наскільки історія журналів зберігається в пам'яті. Навряд чи це вирішить проблему.
satur9nine

1
@ satur9nine, я не можу сказати, чи виправляє проблему на базовому рівні, але вирішив мою проблему тим, що запобіг збої та дозволив відображати більше повідомлень журналу.
Сурагч

Після передачі резервної копії TWRP з одного Moto G5 Plus на інший, мій буфер logcat складався з деяких подій місяців тому, деяких подій сьогодні, а потім read: unexpected EOF!. Збільшення до 16 мільйонів вирішило проблему і призвело до зникнення багатомісячних подій.
nyanpasu64

18

У параметрах розробника ви можете встановити розмір буфера реєстратора максимум 16 млн.
(Налаштування> Система> Параметри розробника> Розміри буфера реєстратора)

Якщо вам потрібно більше, ви можете встановити це за допомогою adb. Наприклад, ви можете встановити його на 100M:

adb logcat -G 100M

7

Цей журнал, який ви опублікували, повідомляє про збій програми (хоча не звичайним способом із стеком стек, але вона збій), а не logcat. Ви вибрали програму та встановили для фільтра значення "Показати вибрану програму" в logcat? Якщо так, просто встановіть для фільтра значення "Без фільтра", і ви побачите всі журнали вашого додатка.

Крім того, якщо вам потрібно перезапустити logcat з будь-якої причини, замість того, щоб перезапустити Android Studio, ви можете запустити наступні команди, які перезапустить adb і врешті-решт також перезапустить ваш logcat:

adb kill-server
adb start-server

це дивно, адже додаток, здається, продовжує працювати? я роблю у самому обчисленні (звідси і моє бажання налагодити його), але решта працює, натискання на кнопки тощо продовжує давати очікувану поведінку? трюк adb відновив logcat, на жаль, пропускає потім до фактичного моменту часу ...
Но Кумадо

Я подумав, що ви маєте на увазі під тривалим обчисленням, а потім щось піде не так, що означає, що програма, ймовірно, стає відсталою або не реагує, а потім збій. Чи додаток складається з декількох видів діяльності? І коли помилка трапляється, це як повернення до попередньої діяльності? Жоден фільтр не відображає всі журнали, чи не так?
ahasbini

Ніяка програма не працює гладко, результати, які в якийсь момент відхиляються від очікуваних, так, кілька заходів і робочі потоки виконуються з асинхронними завданнями, і ні, після аварійного повідомлення, logcat залишається м'яким для всього ....
Noh Kumado

3

Якщо ви працюєте від справжнього телефону - відключіть і підключіть телефон від USB, який працював у мене (буфер стає порожнім - як пропонується @Suragch).


2

Зміна розміру буфера для мене не спрацювала. Що змінило моє USB-з'єднання на порт USB 3.0.


1
Чудово! Дякую за цей підказку. У мене була та сама проблема.
Ethan Leroy

У тому ж ключі також видаліть усі USB-концентратори, що знаходяться між вашим пристроєм та комп’ютером, та / або спробуйте різні порти USB на своєму комп’ютері.
satur9nine


1

Перезавантажте пристрій! Я не уявляю, чому це працює у мене після перезавантаження мобільного телефону.



0

На жаль, це, здається, все ще проблема, я не зміг знайти задовільного рішення, окрім встановлення плагіна ( Файл -> Налаштування -> Плагіни -> Marketplace ) під назвою " Переглядач журналу ". Працює краще, ніж вбудований переглядач logcat Android Studio.


0

Рекомендації для мене не спрацювали. Я нарешті змінив це налаштування:

Меню "Виконати", Запис в меню "Редагувати конфігурації", потім ліворуч "Додаток / програма для Android" і праворуч вкладка "Мікеланджело", і нарешті активуйте "Logcat: Очистити журнал перед запуском".

Звичайно, це має побічні ефекти, але принаймні я знову бачу журнал.


-1

Просто перейдіть у меню Файл -> Недійсні кеші / Перезапуск дозволить android studio виконати цю роботу


Я не думаю, що це допоможе із самою проблемою, але перезапуск AS перезапустить logcat, мабуть, вирішивши проблему.
PNDA

@PNDA, чому б не дозволити android перевірити ваші кеші та перезапустити його для вас? Я не бачу, де недолік
Anonymous-E
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.