第十章 读书笔记
Android模拟器只能通过端口映射的方式使用kgdbserver调试程序。但开发板除了可以通过ip连接到kgdbserver外还可以通过串口进行连接。开发板同样也带了kgdbserver程序,可直接运行。
大多数开发人员认为kgdb是最好的内核调试工具。Kgdb除了提供类似的printk函数的日志输出功能,还允许开发人员直接在pc上通过gdb链接目标设备。Kgdb包含了两部分:kgdb内核和一套连接接口。这些接口目前支持串口tty设备连接和以太网连接。其中串口连接需要通过内核参数kgdboc指定要连接的串口tty设备;以太网连接通过内核参数kgdboc指定ip和端口号。Kgdb支持多种处理器架构。由于这些处理器架构差异很大,所以kgdb单独为每个支持的处理器架构实现了kgdb内核,如arm架构的kgdb内核源代码文件是arch/armkernel/kgdb.c。
linux内核调试一直被很多人认为是非常困难的。大多数人宁愿直接使用printk函数输出调试信息,也不愿意使用各种命令(gdb、gdbserver、kgdb等)进行调试。因为这样做并不一定能换来更多的好处。当发现某段代码的bug太多或很难printk函数输出信息找到,可以考虑使用kgdb用step by step的方式定位bug。