请问怎么调试驱动,printk()打印的信息在哪儿能看见?

cokeclassic 2007-05-11 08:28:45
请问怎么调试驱动,printk()打印的信息在哪儿能看见?我在超级终端观察printf()打印的信息时,怎么不见驱动中printk()打印信息呢?
驱动的调试是不是需要一个小的应用程序去调用驱动中的函数啊?谢谢
...全文
4227 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzcpig 2007-05-19
  • 打赏
  • 举报
回复
前面不是回答了么。

printk不显示在超级终端上,保存在/var/log/messages。

可以在命令行上输入dmesg命令查看,如果只想显示最后几行,可以用
dmesg | tail - 8

cokeclassic 2007-05-19
  • 打赏
  • 举报
回复
想在超级终端看见printk输出的信息,是不是要用GDB来调试啊?如果是,该怎么用?谢谢
cokeclassic 2007-05-19
  • 打赏
  • 举报
回复
joyself(独来读网)
-------------
我在驱动中每个函数体的第一行都写了printk打印信息的
joyself 2007-05-16
  • 打赏
  • 举报
回复
我觉得楼主说的不是很清楚。

1) 启动时的信息未打印?
还是

2)在启动后,调试时候未看到printk打印的信息?

你确定你的驱动程序会打印消息吗?
hzcpig 2007-05-16
  • 打赏
  • 举报
回复
驱动的调试是不是需要一个小的应用程序去调用驱动中的函数啊?谢谢

哦,刚才没看清楚你的问题。知道你的意思了。

Linux下程序分为内核态和用户态,我们编写的驱动是内核态的,通过insmod加载.ko模块,再向/dev中注册设备节点后,用户态的程序就可以通过open,read,write,ioctl,release等方法访问,所以按你的意思,需要写一个用户态的可执行文件对设备进行操作,调试设备是否驱动成功。
hzcpig 2007-05-16
  • 打赏
  • 举报
回复 1
printk不显示在超级终端上,保存在/var/log/messages。

可以通过dmesg命令查看,如果只想显示最后几行,可以用
dmesg | tail - 8

驱动一般是软硬件联调

软件方法有:
1. 用打印调试(printk)
2. 使用 /proc 文件系统调试
3. 用strace 命令观察调试
4. 使用kgdb 调试
(软件调试方法可以参考Linux Device Driver 3rd Chapt 04

硬件调试一般是用示波器探测波形。
aero_boy 2007-05-16
  • 打赏
  • 举报
回复
如果你是在X Windows下的XTerm中insmod的,你不会看到输出,使用dmesg就可能看到在加载和卸载模块时的输出内容,只有直接在console下加载才能直接显示到屏幕上。
jacky_emdoor 2007-05-15
  • 打赏
  • 举报
回复
vim /etc/sysconf 查看你的内核的调试信息放倒哪里了
默认是在/var/log/messages
无知者无谓 2007-05-14
  • 打赏
  • 举报
回复
请问如果要象终端打印输出,该怎么做呢?谢谢
===================================
不知道lz看的什么书,我想那上面应该有告诉你,不要在X下调试内核模块的吧?
用真正的终端,而不是虚拟终端!
cokeclassic 2007-05-12
  • 打赏
  • 举报
回复
up
cokeclassic 2007-05-11
  • 打赏
  • 举报
回复
silajoin(带三个表)
---------------
请问如果要象终端打印输出,该怎么做呢?谢谢
silajoin 2007-05-11
  • 打赏
  • 举报
回复
printk()打印的信息一般在/var/log/messages文件里
驱动程序一般通过注册自己的回掉函数供用户程序使用,看一下LDD3(Linux Device driver 3),上面讲的很清楚

4,438

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧