内核的printk调试信息输出级别怎么设置?

发布于 2022-10-15 05:57:45 字数 135 浏览 20 评论 0

printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
如上,想输出内核带的所有printk信息,可以在编译内核的时候设置吗,设置menuconfig的什么参数?从KERN_INFO到KERN_EMERG的所有信息都要输出。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

毁我热情 2022-10-22 05:57:45

修改DEFAULT_CONSOLE_LOGLEVEL这个值看看

水溶 2022-10-22 05:57:45

之前修改了一下,不起作用,用了一个比较治标的办法,把其它调试级别全部重新define成INFO级别,所有信息都输出到console上了。

黯淡〆 2022-10-22 05:57:45

默认是输出WARN级别以上的消息,比如EMERG....
优先级低于WARN的INFO是不会被输出的。
更改/proc/.../printk这个配置文件也没有用。

我一般是将消息级别重新定义成WARN。或者取消消息级别。

回复 3# 李牛-克斯

无声静候 2022-10-22 05:57:45

通过设置 printk 的 proc 文件应该就可以。

[root@Kernel-Test ~]# sysctl -a | grep printk
kernel.printk = 6        4        1        7

上面的是缺省的。可以根据实际情况修改。

扬花落满肩 2022-10-22 05:57:45

dmesg -n 8 可以吗?

赠佳期 2022-10-22 05:57:45

不行。
下面是模块的初始化代码:

  1. static __init int blockprobe_init(void)
  2. {
  3.         int ret = -ENOMEM;
  4.         printk("warn: message.\n");
  5.         printk(KERN_EMERG,"emerg: message.\n");
  6.         printk(KERN_INFO,"info: message.\n");
  7.         printk(KERN_DEBUG,"debug: message.\n");
  8.         return 0;
  9. }
  10. module_init(blockprobe_init);

复制代码输出结果:
[root@localhost]# dmesg
warn: message.

[root@localhost]# sysctl -a | grep printk
kernel.printk = 8        4        1        7
kernel.printk_ratelimit = 5
kernel.printk_ratelimit_burst = 10
kernel.printk_delay = 0

回复 5# Godbach

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文