第十章是嵌入式linux的调试技术,对于复杂的linux驱动及HAL等程序库,需要使用各种方法进行调试,如设置断点,逐步跟踪代码,输出调试信息等。本章主要介绍如何利用开发板、android模拟器以及一些函数、工具调试嵌入式linux内核模块、可执行文件和共享库。
首先讲的是打印内核信息:printk,该函数运行在用户空间,与printf类似。Linux系统通过/proc/sys/kernel/printk文件来控制printk函数输出日志信息的输出方向。Printk文件是一个简单的有4个数字组成的文本文件,4个数字含义分别如下:
6:将消息输出到控制台的级别,只有高于该级别的输出信息才可以被输出到控制台
4:默认的消息日志级别,如果不在printk函数制定日志级别,就会使用该值作为默认的级别。
1:控制台日志级别可以被设置的最小值
7:控制台级别级别默认值
虽然使用printk函数可以很方便的将消息写入到日志文件或者控制台,但是大量使用printk频繁地操作日志文件或控制台设备文件会严重影响到linux驱动的性能,因此,这就要求linux驱动只在开发阶段使用printk函数输出消息。
LINUX系统中提供了一类工作,通过他们可以逐步跟踪程序的代码,首先是用gdb调试用户空间程序,以及用kgdb远程调试内核程序。具体内容可以参考书上的代码部分。
第十章除了介绍printk函数调试技术以外,也介绍了其他调试技术,我们可以根据实际情况决定使用哪种。