调试消息未在控制台上打印

时间:2019-01-01 13:20:16

标签: linux linux-kernel linux-device-driver

我试图启用在控制台上打印调试消息。

#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时该消息可用。我在这里犯了什么错误。

1 个答案:

答案 0 :(得分:1)

来自内核的消息不会打印在终端上(除非在内核cmdline中将其指定为console =)。它们被附加到内核日志中,该日志存在于内核中。用户空间程序可以通过设备文件/dev/kmsg访问该文件。 dmesg命令读取此文件,以便在终端上打印内核日志内容。