嵌入式 Linux 的 GDB 远程调试的实现
作者:李 权 李彦明 厉 磊
远程调试环境由宿主机 GDB 和目标机调试 stub 共同构成,两者通过串口或 TCP 连接。
使用 GDB 标准远程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调
试功能。调试 stub 是嵌入式系统中的一段代码,作为宿主机 GDB 和目标机调试程序间的一
个媒介而存在。
就目前而言,嵌入式 Linux 系统中,主要有三种远程调试方法,分别适用于不同场合
的调试工作:用 ROM Monitor 调试目标机程序、用 KGDB 调试系统内核和用 gdbserver 调
试用户空间程序。这三种调试方法的区别主要在于,目标机远程调试 stub 的存在形式的不
同,而其设计思路和实现方法则是大致相同的。
而我们最常用的是调试应用程序。就是采用 gdb+gdbserver 的方式进行调试。 在很多情
况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序。采用 GDB 方法调试,
由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用 gdb+gdbserver
的方式进行调试。Gdbserver 在目标系统中运行,gdb 则在宿主机上运行。
要进行 GDB 调试,目标系统必须包括 gdbserver 程序,宿主机也必须安装 gdb 程序。
一般 linux 发行版中都有一个可以运行的 gdb,但开发人员不能直接使用该发行版中的 gdb
来做远程调试,而要获取 gdb 的源代码包,针对 arm 平台作一个简单配置,重新编译得到
相应 gdb。
gdb 的源代码包可以从 http: //ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下载,我们选
择的版本为 gdb-6.4。下载到某个目录,我下载到自己的用户目录:/home/lilei(在 home 中通
过 mkdir 命令建立自己的文件夹)
。
下载完后,进入/home/ lilei 目录,配置编译步骤如下:
#tar jxvf gdb-6.4.tar.bz2
#cd gdb-6.4
#./configure --target=arm-linux --prefix=/usr/local/arm-gdbar -v
#make
(注意:target 是你的目标板,我的是 arm-linux,prefix 是你要安装的目标文件夹。这
1