最后编辑于: 2016-03-07 22:41 | 分类: linux | 标签: | 浏览数: 957 | 评论数: 0
本文转载自Jim的Ubuntu环境下如何显示printk的输出
在Linux中,驱动程序工作在内核态,内核与用户之间的交互是通过控制台dev/console
实现的,控制台与终端的概念对于我们“年轻人”来说是容易混淆的,我本人到现在也不是彻底搞明白(菜鸟啊)。
内核打印函数printk的输出被定向到文件/dev/console
,但是在Ubuntu环境中,我们使用的通常是虚拟终端/dev/pts/n
。其中n为虚拟终端的编号,如果你当前打开了第3个虚拟终端,那么第3个终端的对应的设备文件即为 /dev/pts/3。可以通过命令tty查看当前终端所对应的设备文件。
在弄清楚了上述概念之后,就不难明白为什么平时在图形界面终端(虚拟终端)下调试驱动程序时printk的输出都看不到了。
有两种比较简单的方法可以查看驱动的输出信息,如下所示:
方法一:dmesg命令
说明:采用该方法的缺点是需要每次手动执行命令查看消息。
方法二:cat /proc/kmsg &
说明:别忘记在命令参数最后加个与号&
让cat命令工作在后台。采用该方法的优点是只要驱动有消息输出马上就会在终端看到。
注:此处只给出解决方法(策略)而非原理(机制)。