本章讲嵌入式Linux调试技术,对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试。例如,设置断点、逐步跟踪代码、输出调试信息等。打印内核调试信息:printk。printk用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间。printk函数原型如下:asmlinkage int printk(const char *fmt,...)。虽然使用printk函数可以很方便地将消息写入日志文件或控制台。但大量使用printk函数频繁操作日志文件获控制台设备文件(/dev/console)会严重影响Linux驱动的性能。通过虚拟文件系统(/proc)进行数据交互。/proc文件系统的行为方式与设备文件系统(/dev)类似。/proc是虚拟文件系统,是内存映射。Linux系统中有很多命令(如free)就是通过分析/proc/meminfo文件的内容来显示系统内存资源的。读者可以执行free命令,看看显示的信息是否和meminfo文件中的部分内容匹配。最后说一下调试工具,用gdb调试用户空间程序,读者可以直接运行build.sh脚本文件编译gdb_debug.c文件,但注意要加上命令行参数-g。用kgdb远程调试内核程序中首先需要配置内核参数,这些参数通知Linux内核要如何进行调试。Linux内核调试一直被认为是非常困难的。大多数宁愿直接使用printk函数输出调试信息,也不愿意使用各种命令进行调试,因为这样做并不一定能换来更多的好处。通过本章知道调试技术的一些特点及调试工具,对本章内容有了大致了解。