【前因】目前Linux 3.4.0 默认Dmesg的buffer是128K,超出时前面的log就看不到了;
可以看到 __LOG_BUF_LEN equals (1 << CONFIG_LOG_BUF_SHIFT);
http://elinux.org/Debugging_by_printing
[解决方法]
方法1:1.1 使用 make menuconfig;( make menuconfig -> General Setup -> Kernel log buffer size).
1.2 make bootimage or under kernel 文件夹下 执行make
方法2: 2.1 修改 kernel/printk.c 这个参数 __LOG_BUF_LEN可以看到 __LOG_BUF_LEN equals (1 << CONFIG_LOG_BUF_SHIFT);
所以根本上是要修改: CONFIG_LOG_BUF_SHIFT
2.2 重新编译
【说明及参考文档】
其实dmesg 是读取 /proc/kmsg文件节点,所以也可以 cat /proc/kmsg 来模拟实时串口样子的打印方式;
http://elinux.org/Debugging_by_printing
本文详细介绍了如何通过两种方法增加Linux 3.4.0版本中Dmesg缓冲区的大小,包括使用makemenuconfig进行配置和直接修改内核源代码。同时提供了额外的调试技巧,如使用cat/proc/kmsg命令模拟实时打印。
1万+

被折叠的 条评论
为什么被折叠?



