KGDB移植开发

来源:互联网 发布:易语言高仿qq2016源码 编辑:程序博客网 时间:2024/04/28 04:45

1 KGDB概述

       KGDBKernel GNU Debugger)是一种源代码级Linux 内核调试器,它以桩函数的方式存在于内核的各个异常处理函数入口,接管内核所有的异常处理。它构建了一种对内核异常的管理机制,例如对断点异常的管理,对单步异常的管理等,通过对这些异常的管理来达到调试内核的目的。KGDB 与运行在主机端的调试器GDBGNU Debugger)配合使用,为调试Linux 内核提供了一种交叉调试机制。GDB KGDB 通过串口或网口进行信息交互,用户可以动态地查看和修改系统的各种变量,或者在内核中进行断点设置、单步执行、查看寄存器和堆栈等操作,与调试普通的应用程序非常相似。

本文就KGDB 内核版本的制作、配置、编译和环境搭建进行详细的描述,能对用户自行搭建KGDB环境并调试起到指导作用。

1.1 KGDB的获取方式

       Linux 的发布网站上可以获取到2.6.152.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/

1.2 KGDB的代码结构

 

1.2.1 公共代码

       公共代码即对与处理器架构无关的代码进行修改,来使KGDB 获得对内核的统一的处理。这其中包括:

Ø         网卡驱动和串口驱动部分: