1 KGDB概述
KGDB(Kernel GNU Debugger)是一种源代码级Linux 内核调试器,它以桩函数的方式存在于内核的各个异常处理函数入口,接管内核所有的异常处理。它构建了一种对内核异常的管理机制,例如对断点异常的管理,对单步异常的管理等,通过对这些异常的管理来达到调试内核的目的。KGDB 与运行在主机端的调试器GDB(GNU Debugger)配合使用,为调试Linux 内核提供了一种交叉调试机制。GDB 与KGDB 通过串口或网口进行信息交互,用户可以动态地查看和修改系统的各种变量,或者在内核中进行断点设置、单步执行、查看寄存器和堆栈等操作,与调试普通的应用程序非常相似。
本文就KGDB 内核版本的制作、配置、编译和环境搭建进行详细的描述,能对用户自行搭建KGDB环境并调试起到指导作用。
1.1 KGDB的获取方式
在Linux 的发布网站上可以获取到2.6.15~2.6.20 的KGDB 补丁。2.6.21 的发布移到了开源网站sourceforge 上。由于KGDB 补丁并不是对所有内核版本都支持,在选择补丁版本时应选择与内核版本最接近的。目前M300项目基于Linux 2.6.21开发,而KGDB 补丁恰好没有该版本,所以选择2.6.18(arm, ppc, mips)的补丁作为移植对象。由于内核与补丁的版本号不相同,只能靠手工合代码的方式将补丁中的代码移植出来,而不能使用patch 命令。因此选择2.6.18补丁作为移植对象。
网址:
http://www.eu.kernel.org/pub/linux/kernel/people/agk/patches/2.6/
http://www.eu.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/