第十章

Linux内核调试被很多人认为是很困难的,很多人宁愿直接使用printk函数输出调试信息,也不愿意使用各种命令进行调试。对于复杂的Linux驱动及HAL等程序,需要使用各种方法对其进行测试。printk函数与printf函数类似,而printk函数运行在内核空间,printf函数运行在用户空间。使用printk函数可以很方便地将消息写入日志文件或控制台,但是大量使用printk函数频繁操作日志文件或控制台设备文件会严重影响Linux驱动的性能,因此,这就要求Linux驱动只在开发阶段使用printk函数输出消息,在正式发布Linux驱动时将可能影响性能的printk函数去掉。/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc是虚拟文件系统,他并不是真正的文件系统,而是内存映射。有很多系统信息就是通过/proc文件系统由内核空间的程序向外界提供的。Linux系统中有很多命令就是通过分析/proc/meminfo文件的内容来显示系统内存资源的。在Linux驱动程序中可以使用内核函数在/proc目录中创建和删除虚拟文件,也可以建立和删除虚拟目录。调试工具:用gdb调试用户空间程序、用gdbserver远程调试用户空间程序、用kgdb远程调试内核程序。

原文地址:https://www.cnblogs.com/huxiaohh/p/5614753.html