我注意到 logcat 缓冲区的大小在不同的设备上有所不同。假设我在我的设备上有 root 权限,有没有办法在运行时更改主缓冲区的缓冲区大小?如果不是,那么假设我可以重建 Android 映像,我该如何在编译时更改它?我希望将其放大以用于诊断目的。
8 回答
“开发者选项”中的“记录器缓冲区大小选项”
它允许将大小更改为 64k 和 16M 之间的几个值。
adb logcat -g
然后立即显示更新限制。
在 5.1.1 上测试,这个答案声称它是最近添加的。
设置日志环缓冲区的大小
adb logcat -G <size>
附加 K 或 M 以指示千字节或兆字节
例子:adb logcat -G 512K
查看当前缓冲区大小
adb logcat -g
设置所有类型的缓冲区大小(main、system、crash)
adb logcat -G 16M # 16M can be replace by (128K ~ 16M)
设置特定类型的缓冲区大小(main、system、crash)
adb logcat -b system -G 8M # system can be replaced with 'main' or 'crash'
根据新闻组Android 开发者,logcat 缓冲区大小:
设备上的日志缓冲区为 64 KB。时间戳、进程 ID 和日志级别以紧凑格式存储,因此您实际上可能会从
logcat -d -v <mode>
.
缓冲区大小由内核决定,位于 */drivers/staging/android/logger.c 中。
使用哪些缓冲区以及大小随 Android 版本而变化。Android 3.0 (Honeycomb) 和更新版本也有一个系统缓冲区,这四个都是 256 KB。您必须重新编译内核才能更改它。
不,根据这里,设备上的日志缓冲区似乎是 64 KB。时间戳、进程 ID 和日志级别以紧凑格式存储,因此您实际上可能会从logcat -d -v <mode>
.
另请参阅 Stack Overflow 问题Logcat 的大小限制是多少?.
无论如何,为了将日志保存在其他地方,您可以使用Reading and Writing Logs。那也许可以帮助你。
为了通过 adb 将特定 Android 设备的 logcat 缓冲区设置为 16Mb,我使用了:
adb -s 2615a1d4e3174a6e logcat -G 16M
但你可以只使用:
adb logcat -G 16M
或设置以前的缓冲区大小:
adb logcat -G 256K
您可以在属性文件 android-studio\bin\idea.properties 中增加idea.cycle.buffer.size=1024 的值。这对我有用。