Logcat崩溃并显示错误:意外的EOF


81

我正在进行一些冗长的计算,但很晚才出问题。我尝试使用断点,但到目前为止没有成功。所以我进入了一个循环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

我需要重新启动Studio才能使Logcat重新运行。

我查看了是否可以找到Logcat缓冲区大小的一些设置,但是到目前为止,我什么都没找到。该怎么办?


1
询问者正在混淆两个不相关的内容。消息“崩溃开始”表示Android应用程序已崩溃,而非logcat。“阅读:意外的EOF!” 确实来自logcat进程,它表示logcat进程失去了与logd进程的连接。
satur9nine19年

好了,该应用程序没有崩溃,它只是没有收敛....但由于logcat的缓冲区限制,我看不到它..
Noh Kumado

Answers:


97

尝试在设备/仿真器上的“设置”->“开发人员”选项下将“记录器缓冲区大小”设置为“关闭。这可能是由于记录器缓冲区配置为仅在特定时间显示有限的KB日志而发生的。仅当清除先前的缓冲区后,才会显示下一组日志。


2
确实,平板电脑一侧的logcat长度固定!
Noh Kumado

9
我将其关闭,现在根本看不到任何日志。(三星Note 8)。我认为这不是每个人都能
找到

1
我将其关闭,但作为开题器,我仍然遇到错误。
Nisim Naim

这对我有用(与模拟器一起使用)。这个问题是最近才开始的。
Lassi Kinnunen

这不应该是一个公认的答案,最好增加缓冲区以防止其耗尽,而不是在实际设备上将其关闭。虽然可能取决于设备/取决于Android OS版本。
Sergey Dryganets

131

更充分的答案

接受的答案对我不起作用。我没有关闭记录器缓冲区,而是将其增加到最大大小。

  1. 如果尚未启用模拟器或设备(不是Android Studio)中的开发人员选项,请在其中启用它:在模拟器或设备中,转到“设置”>“系统”>“关于”(模拟设备),然后单击内部版本号7次。
  2. 转到设置>系统>开发人员选项>记录器缓冲区大小,然后选择一个更大的值。

在此处输入图片说明

  1. 我还必须重新启动模拟器。

因此,最初的问题显然是由于设备日志缓冲区被填满以进行冗长的日志记录而发生的。增加缓冲区大小可让您在单个日志记录会话中记录更多内容。


1
使用此工具,可以避免在正常工作日中出现此问题。我有一个例外:在具有大量蓝牙设备的环境中使用Samsung手机。三星决定在系统级别记录每次蓝牙扫描,显然16M不足以满足此要求。当我身边有30多个蓝牙设备时,它仍然每天会发生4到5次。
回复

logd缓冲区是一个环形缓冲区,更改它的大小应该对logcat和logd之间的连接是否丢失没有可测量的影响。它所做的只是更改内存中有多少日志记录历史记录。这很难解决问题。
satur9nine19年

1
@ satur9nine,我不能说它是否在底层解决了问题,但是它解决了我的问题,因为它可以防止崩溃并允许显示更多日志消息。
Suragch '19

将TWRP备份从一个Moto G5 Plus转移到另一个Moto G5 Plus后,我的logcat缓冲区包括几个月前的一些事件,今天的一些事件,然后是read: unexpected EOF!。增加到1600万可以解决此问题,并使几个月前发生的事件消失。
nyanpasu64

16

在开发人员选项中,您可以将Logger缓冲区大小设置为最大16M。
(设置>系统>开发人员选项>记录器缓冲区大小)

如果需要更多,可以使用adb进行设置。例如,您可以将其设置为100M:

adb logcat -G 100M

6

您发布的此日志表明应用程序崩溃(尽管不是以通常的方式使用stacktrace,而是崩溃了),而不是logcat。您是否已在Logcat中选择了应用程序并将过滤器设置为“显示所选应用程序”?如果是这样,只需将过滤器设置为“无过滤器”,您将看到应用程序的所有日志。

另外,如果出于任何原因需要重新启动logcat,而不是重新启动Android Studio,则可以运行以下命令,该命令将重新启动adb并最终重新启动logcat:

adb kill-server
adb start-server

这很奇怪,因为该应用似乎可以继续运行?我对计算本身很满意(因此我希望对其进行调试),但其余工作正常,单击按钮等仍可产生预期的行为?亚行技巧恢复了日志猫,不幸的是跳过然后到实际时间点...
Noh Kumado

我认为您所说的冗长的计算是什么意思,然后出了点问题,这意味着应用程序可能变得迟钝或没有响应,然后崩溃了。该应用程序由多个活动组成吗?当错误发生时,就像回到上一个活动一样吗?没有过滤器不能正确显示所有日志吗?
ahasbini

没有应用程序运行流畅其结果,在从预期的,是一些活动和工作线程的一些点偏离与异步任务做完,那一声味精后无,logcat的遗体平淡的一切....
卢Kumado

3

如果您使用的是真实电话,请从对我有用的USB断开并连接电话(缓冲区变空-建议使用@Suragch)。


2

更改缓冲区大小对我不起作用。所做的是将我的USB连接更改为USB 3.0端口。


1
精彩!感谢您的提示。我遇到过同样的问题。
伊桑·勒罗伊

同样,请卸下位于设备和计算机之间的所有USB集线器,和/或尝试使用计算机上的其他USB端口。
satur9nine


1

重新启动您的设备!我不知道为什么重新启动手机后它对我有用。


0

只需转到File-> Invalidate Caches / Restart,即可让android studio完成这项工作


我认为这本身并不能解决问题,但是AS重新启动会重新启动logcat,显然可以解决问题。
PNDA

@PNDA为什么不让android验证您的缓存并为您重新启动它?我看不出缺点在哪里
Anonymous-E

0

不幸的是,这似乎仍然是一个问题,除了安装名为“ Log Viewer ”的插件(File-> Setting-> Plugins-> Marketplace)外,我找不到令人满意的解决方案。比Android Studio的内置logcat查看器更好地工作。


0

这些建议对我没有用。我终于更改了此首选项设置:

菜单“运行”,菜单项“编辑配置”,然后在左侧“ Android应用程序/应用程序”和在右侧标签“ Michelangelo”,最后激活“ Logcat:启动前清除日志”。

当然这会有副作用,但是至少我可以再次看到日志输出。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.