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中的相关信息来监视和调试驱动

 使用kgdb

 kgdb是在内核源码中打用于调试内核的补丁,然后通过相应的硬件和软件,就可以像gdb单步调试应用程序一样来调试内核(当然包括驱动)

posted @ 2022-09-22 23:42  MoonXu  阅读(214)  评论(0编辑  收藏  举报