Android 设备的日志缓冲区被写满,logcat: Unexpected EOF!

  • 在 Android Studio 中,使用 Logcat 时,出现如下信息

    WARNING: Logcat was not cleared on the device itself because 'logcat -c' timed out.
    logcat: Unexpected EOF!

    This means that either the device shut down, logd crashed, or this instance of logcat was unable to read log
    messages as quickly as they were being produced.

    If you have enabled significant logging, look into using the -G option to increase log buffer sizes.

问题原因
  1. Android 设备的日志缓冲区被写满了,而且新日志生成的速度太快,导致 Logcat 读取跟不上,从而连接中断

  2. 报错的是 Android Studio,也就是 ADB 客户端,而不是设备本身

    1. 写入速度大于读取速度,生产者(设备)和消费者(Android Studio)之间出现了速度差

    2. 如果生产者写入新数据的速度极快,以至于在新数据覆盖旧数据的过程中,把 Android Studio 还没来得及读取的那段旧数据也给覆盖掉了,于是报错

处理策略
  • 使用 ADB 清空现有日志,立即恢复
shell 复制代码
adb logcat -c
补充学习
  1. 查看缓冲区大小
shell 复制代码
adb logcat -g
复制代码
# 输出结果

main: ring buffer is 16 MiB (597 KiB consumed), max entry is 5120 B, max payload is 4068 B
system: ring buffer is 16 MiB (256 KiB consumed), max entry is 5120 B, max payload is 4068 B
crash: ring buffer is 16 MiB (0 B consumed), max entry is 5120 B, max payload is 4068 B
kernel: ring buffer is 16 MiB (12 KiB consumed), max entry is 5120 B, max payload is 4068 B
  1. 修改缓冲区大小,例如,将缓冲区大小设为 4MB
shell 复制代码
adb logcat -G 4m
  1. 缓冲区的"自清"

    1. Android 的 logcat 缓冲区在底层是一个环形缓冲区

    2. 当新日志写入时,如果缓冲区还有剩余空间,就直接追加

    3. 当缓冲区完全写满时,新日志会从缓冲区的头部开始覆盖最旧的日志

相关推荐
SL_staff8 小时前
运维救火实战:钉钉API变更致薪资计算中断,如何用可视化逻辑引擎5分钟热修复
java·开源·全栈
猫猫.1538 小时前
HashTable、HashMap、ConcurrentHashMap 核心区别总结
java·开发语言·java-ee
传奇开心果9 小时前
【Compose Multiplatform跨端声明式UI实用技术】第19课:多平台部署与发布
android·kotlin
红尘伴蝶舞9 小时前
加密拦截器让抓包失效,我只能从 4KB 的 logcat 碎片里拼回 JSON
android·kotlin·ai编程
booboosui9 小时前
219 个还是 0 个:读不到微信界面时,我只加不删
android
JMchen9 小时前
【Jetpack 内核实战 08 】:组件整合——DataStore + Room 构建离线优先架构
架构·kotlin·android jetpack
Android打工仔9 小时前
Compose 中何时该用 padding,何时该用 offset
android·android jetpack
郭小李9 小时前
spring mvc 工作流程
java·spring·mvc
二流小码农9 小时前
HarmonyOS开发助手,0代码让元服务从开发到上架
android·ios·harmonyos
SL_staff9 小时前
BI大屏嵌入MES的登录态难题:JVS统一账号体系实战解法
java·数据分析·数据可视化