linux驱动代码调试
1. printk
2. cat /dev/faulty
3.strace eg:strace ls /dev > /dev/scull0
-t 来显示每个调用执行的时间,
-T 来显示调用中花费的时间,
-e 来限制被跟踪调用的类型(例如strace –eread,write ls表示只监控read和write调用),
以及-o 来重定向输出到一个文件。缺省情况下,strace 打印调用信息到 stderr
4. 利用内核内置的hacking选项
5. 利用ioctl方法
由于驱动中的ioctl函数可以将驱动的一些信息返回给用户程序,也可以让用户程序通过ioctl系统调用设置一些驱动的参数。
所以在驱动的开发过程中,可以扩展一些ioctl的命令用于传递和设置调试驱动时所需各种信息和参数,以达到调试驱动的目的
6. 利用/proc 文件系统
/proc
文件系统用于内核向用户空间暴露一些内核的信息。因此出于调试的目的,我们可以在驱动代码中增加向/proc文件系统导出有助于监视驱动的信息的代码。
这样一来,我们就可以通过查看/proc中的相关信息来监视和调试驱动
7 使用kgdb
kgdb是在内核源码中打用于调试内核的补丁,然后通过相应的硬件和软件,就可以像gdb单步调试应用程序一样来调试内核(当然包括驱动)