通过学习Android深度探索(卷一)HAL与驱动开发的第十章让我知道了嵌入式Linux的调试技术和调试工具有哪些。
Printk可以打印内核调试信息,该函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间。Printk文件是一个简单的有四个数字组成的文本文件,该文件默认值为:6:将消息输出到控制台的级别;4:默认的消息日志级别;1:控制台日志级别可被设置的最小值;7:控制台日志级别的默认值。不管消息级别是多少,所有通过printk函数发出的消息都会输出到日志文件。
大量使用printk函数频繁操作日志文件或控制台设备文件会严重影响Linux驱动的性能,要想控制printk函数的输出,而且实现起来很方便,最好的方法无疑是利用C语言中的编译指令。
在Linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具,它并不是真正的文件系统,而是内存映射,所有读写/proc的操作都是对内存的读写,所以读写/proc文件系统的速度要远比读写/dev文件系统的速度快。
调试工具有:用gdb调试用户空间程序;用gdbserver远程调试用户空间程序;用kgdb远程调试内核程序。