日期:2014-05-16  浏览次数:20695 次

关于驱动模块调试
在2.4内核下编写驱动模块,可以像应用程序那样设置一个断点,然后一步步向下调试吗?如果可以应该怎么做?谢谢

------解决方案--------------------
调试驱动的软件方法有:
1. 用打印调试(printk)
2. 使用 /proc 文件系统调试
3. 用strace 命令观察调试
4. 使用kdb 调试

其中kdb可以实现你描述的断点调试。

比如

0]kdb> bp scull_read
Instruction(i) BP #0 at 0xcd087c5dc (scull_read)
 is enabled globally adjust 1
[0]kdb> go

bp 命令告诉 kdb 在下一次内核进入 scull_read 时停止. 你接着键入 go 来继续执行. 在将一些东西放入一个 scull 设备后, 可以通过在另一个终端的外壳下运行 cat 命令来读取它



具体可以参考Linux Device Driver 2nd