4

根据手册页,它告诉如果消息的日志级别的优先级高于默认设置的日志级别,那么它将被打印在终端上。但是当我使用类似的句子时

printk(KERN_ALERT " MESSAGE ")

我在终端上打印消息时遇到问题。因为默认的优先级设置为 4 并且KERN_ALERT有 priority1更高。

那么,如何在终端上打印消息?

4

3 回答 3

4

它应该将消息打印到控制台,而不是终端。有时控制台和终端看起来一样,但事实并非如此。编辑/proc/sys/kernel/printk以设置最低优先级以在控制台中打印

于 2013-04-22T09:56:43.537 回答
3

我知道这并不能完全回答您的问题,但就像我在评论中所说的那样,将printk日志记录到控制台通常不是一个好主意。这是我建议的另一种选择,它应该足以满足您的目的。

由于您想将其用于调试目的,您只需打开一个新终端并执行以下命令:

tail -f /var/log/messages

或者

tail -f /var/log/dmesg

之类的。tail -f将打印文件中的最后一条消息,但会继续等待更新。一旦文件中写入了更多行,tail -f就会将它们写入控制台。

无论您是使用此方法还是直接打印到控制台,您可能还对定义一个调用的宏感兴趣,printk并且在调试模式下还会放一个小的msleepafter 以确保日志显示在屏幕上,以防崩溃。这样做是这样的:

set_current_state(TASK_INTERRUPTIBLE);
msleep(/* amount in milliseconds */);
于 2013-04-22T12:00:53.970 回答
0

我最初在主机系统上开发骨架驱动程序时遇到了同样的问题。每次我不得不检查“dmesg”命令。

我必须编辑 /proc/sys/kernel/printk 。

要使用窗口管理器在终端上获取消息,例如广告 KED 和 Gnome,请运行“tail -f /var/log/kern.log &”以在终端上获取消息。

它在 Ubuntu 系统中帮助了我。希望它会有所帮助:)

于 2015-06-13T08:44:02.693 回答