Dmesg and Linux kernel log
来自百问网嵌入式Linux wiki
本文的目的是提供有关Linux®内核日志的信息,包括配置,并详细说明dmesg命令的用法。
简介
- Linux内核能够打印日志和跟踪消息,它们默认情况下存储在环形缓冲区中。
- 使用串行端口在 uart/console 上应用过滤器,也可以显示相同的消息。这是在内核命令行中使用 "console" 参数定义的。有关详细信息,请参考[1]
- dmesg是内核控制台上的shell命令,该命令还会显示环形缓冲区的内容,带或不带过滤器(默认)。
printk函数
- 从内核代码中获取一些调试信息的最简单方法是通过打印出与内核等效的printf的各种信息-printk函数及其派生类。
- 请参阅elinux.org[2] 以获取参考。该信息将发送到控制台,并存储在环形缓冲区中。
printk("My Debugger is Printk\n");
- 您也可以查看Linux内核软件包中提供的printk-format.txt[3]文档,以获取有关语法和格式的详细信息。
[4][5][6]
linux kernel 环形缓冲区
In example for 64K : CONFIG_LOG_BUF_SHIFT=16
Location: -> General setup -> Kernel log buffer size (16 => 64KB, 17 => 128KB)
bootargs = "root=/dev/mmcblk0p5 rootwait rw console=ttySTM0,115200 log_buf_len=65536";
log等级
参考资料
- ↑ https://www.kernel.org/doc/html/latest/admin-guide/serial-console.html
- ↑ https://elinux.org/Debugging_by_printing
- ↑ https://www.kernel.org/doc/Documentation/printk-formats.txt
- ↑ https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
- ↑ https://elinux.org/Debugging_by_printing#Log_Levels
- ↑ http://man7.org/linux/man-pages/man1/dmesg.1.html