我正在尝试为linux内核开发设备驱动程序,但我在调试错误消息方面遇到了问题。
我在桌面(x64)上使用linux内核(ubuntu 14.04,我也尝试过ubuntu服务器14.04)。 并且,我正在使用tty控制台(ctrl + alt + f1)进行测试,因为当我将日志级别设置为7时,tty控制台总是打印printk消息。
我的问题是,首先我的开发设备驱动程序代码存在错误,其次,我无法得到错误的实际原因,因为我无法查看除最后留下的几条错误消息之外的所有错误消息。
我试过ssh进行调试,(测试PC是ssh服务器,ssh客户端从ssh中拉dmesg或者ftrace printk消息)但是ssh服务器比内核bug消息早死了,所以我只能看到来自监视器的bug消息用tty控制台。
我也尝试使用较小尺寸的控制台字体,但这只是暂时的解决方案。
所以,我的问题是,有没有适合这个问题的调试技术?
喜欢,在第一个bug消息后停止打印内核bug消息,或者使用硬件或其他东西将tty console重定向到其他PC ..
请帮我解决问题 谢谢,
答案 0 :(得分:0)
您可以通过修改 rsyslog.conf 将各种系统日志流(包括出现在dmesg中的日志流)重定向到任何终端或文件。
签入时您已经有类似于
的行kern.* /some/file
/some/file
应包含发送给dmesg
的邮件。如果不存在此类行,请创建一行。如果由于某些原因无效,请将kern.*
替换为*.*
并尝试使用此方式。
你也可以使用像dmesg > /var/log/dmesg
这样的命令将dmesg的内容推送到一个文件,这可以由Cron定期完成。