根据手册页,它告诉如果消息的日志级别的优先级高于默认设置的日志级别,那么它将被打印在终端上。但是当我使用类似的句子时
printk(KERN_ALERT " MESSAGE ")
我在终端上打印消息时遇到问题。因为默认的优先级设置为 4 并且KERN_ALERT
有 priority1
更高。
那么,如何在终端上打印消息?
根据手册页,它告诉如果消息的日志级别的优先级高于默认设置的日志级别,那么它将被打印在终端上。但是当我使用类似的句子时
printk(KERN_ALERT " MESSAGE ")
我在终端上打印消息时遇到问题。因为默认的优先级设置为 4 并且KERN_ALERT
有 priority1
更高。
那么,如何在终端上打印消息?
它应该将消息打印到控制台,而不是终端。有时控制台和终端看起来一样,但事实并非如此。编辑/proc/sys/kernel/printk以设置最低优先级以在控制台中打印
我知道这并不能完全回答您的问题,但就像我在评论中所说的那样,将printk
日志记录到控制台通常不是一个好主意。这是我建议的另一种选择,它应该足以满足您的目的。
由于您想将其用于调试目的,您只需打开一个新终端并执行以下命令:
tail -f /var/log/messages
或者
tail -f /var/log/dmesg
之类的。tail -f
将打印文件中的最后一条消息,但会继续等待更新。一旦文件中写入了更多行,tail -f
就会将它们写入控制台。
无论您是使用此方法还是直接打印到控制台,您可能还对定义一个调用的宏感兴趣,printk
并且在调试模式下还会放一个小的msleep
after 以确保日志显示在屏幕上,以防崩溃。这样做是这样的:
set_current_state(TASK_INTERRUPTIBLE);
msleep(/* amount in milliseconds */);
我最初在主机系统上开发骨架驱动程序时遇到了同样的问题。每次我不得不检查“dmesg”命令。
我必须编辑 /proc/sys/kernel/printk 。
要使用窗口管理器在终端上获取消息,例如广告 KED 和 Gnome,请运行“tail -f /var/log/kern.log &”以在终端上获取消息。
它在 Ubuntu 系统中帮助了我。希望它会有所帮助:)