1、像Linux 驱动这样的内核程序只能使用printk函数输出调试信息。printk函数在printk.c 文件中实现 Printk函数运行在内核空间,printf函数运行在用户空间。
2、Linux 驱动只在开发阶段使用printk 函数输出消息,在正式友布Linux 驱动时将可能影响性能的printk 函数去掉。当然,最容易想到的方法就是挨个删
除printk 函数或注释printk 函数。但这样做很麻烦,而且以后想加上printk 函数也是同样麻烦。要想控制printk 函数的输出,而且实现起来很方便, 最好的方法无疑是利用C 语言中的编译指令。
3.Printk函数在控制台显示消息是通过/dev/console设备文件实现的,该设备文件只在字符界面的控制台下才起作用,所以printk函数只有用在字符界面的控制台上才能正常输出消息。
4.在Linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc文件系统的行为方式与设备文件系统C/dev )类似。/proc 是虚拟文件系统,也就是说了/proc 并不是真正的文件系统,而是内存映射。所有读写/proc操作都是对内存的读写,所以读写/proc 文件系统的速度要远比读写/dev 文件系统的速度快。因此,/proc 文件系统也可作为Linux 驱动与用户
5.在Linux 系统中提供了一类工具。通过这些工具,可以逐行跟踪程序的代间,就好像可视化开发工具的step into 和step over 一样。这些工具包含用于调试用户空间程序的gdb、gdbserver 和调试内核空间程序的kgdb。用gdb 调试用户空间程序,用kgdb 远程调试内核程序
6.在Linux驱动程序中可以使用内核函数在/proc目录中创建和删除虚拟文件,也可以建立和删除虚拟目录。
7.list 命令有如下3 种调用格式,
(1)list:显示上一次调用list 命令输出的最后一行后面的10 行。第一次调用list 命令会显示程序开头的10 行。
(2)list:显示上一次调用list 命令输出的第一行前面的IO 行。第一次调用list 命令什么都不会显示。
(3)list 显示第n 行附近的IO 行, 一般会显示第n 行前面5 行和后面4 行,加上第n 行,正好是10 行。如果前面或后面的行数不足,则只显示实际的行。