我试图启用在控制台上打印调试消息。
#include <linux/kernel.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
static int test_hello_init(void)
{
printk(KERN_INFO"%s: In init\n", __func__);
return 0;
}
static void test_hello_exit(void)
{
printk(KERN_INFO"%s: In exit\n", __func__);
}
module_init(test_hello_init);
module_exit(test_hello_exit);
要在控制台上获取信息消息,我执行了以下命令:dmesg -n7
cat /proc/sys/kernel/printk
7 4 1 7
当我使用insmod加载模块时,终端上没有任何消息,而当我键入dmesg时该消息可用。我在这里犯了什么错误。
答案 0 :(得分:1)
来自内核的消息不会打印在终端上(除非在内核cmdline中将其指定为console =)。它们被附加到内核日志中,该日志存在于内核中。用户空间程序可以通过设备文件/dev/kmsg
访问该文件。 dmesg
命令读取此文件,以便在终端上打印内核日志内容。