在运行应用程序时记录内核日志



我把一些printk语句像这样放在Linux内核中

printk(KERN_DEBUG " Hello from Kernel ");

,我想在运行a.out应用程序时记录该命令的输出,如:

cp /var/log/dmesg oldLog.txt
./a.out
cp /var/log/dmesg newLog.txt
diff oldLog.txt newLog.txt

但似乎这种方法不起作用。newLog.txt和oldLog.txt都差不多。但是,我可以在dmesg命令输出中观察到"Hello from Kernel"。您知道像这样捕获日志的简单方法吗?

我的第二个问题是关于日志级别。我在printk语句中使用KERN_DEBUG,但即使我设置了echo 1 > /proc/sys/kernel/printk,它仍然在dmesg命令输出中打印Hello from kernel

这里已经讨论过printk()打印到哪里?

printk消息将直接转到dmesg

1) printk调试语句总是与dmesg命令一起显示,与设置的日志级别无关。Debug消息可以在/var/log/messages中找到2)设置日志级别以获取打印在控制台上的调试消息。即使您设置了最高优先级日志级别(KERN_EMERG)来在控制台中打印调试消息,如果X-server(GUI)正在运行,它也不会不显示在控制台中。要在控制台上获得高优先级printk消息,请跳转到控制台模式。

相关内容

  • 没有找到相关文章

最新更新