
制作GDB和GDBServerarm-linux-gdb.doc
6页制作 GDB 和 GDBServer, arm-linux-gdb 1.可以使用 crosstool,在*.sh 文件中加入--gdb 选项将其编译出来2.可以单独编译,网上也有很多资料:引用 内容今后我们编译程序的时候,就用 arm-softfloat-linux-gnu-gcc 来编译我们的程序当然,应用程序的调试是开发过程中必不可少的环节之一Linux 下的 GNU 的调试器即是 GDB所以我们有了这个交叉编译工具链之后,可以用它来编译gdb 和 gdbserver如果你暂时不需要 GDB 的话,也可以先略过这一步GDB 的编译安装目前比较新的是版本是 GDB6.6其官方网站是http://www.gnu.org/software/gdb/下载 gdb-6.6.tar.gz 源代码包到/usr/src 下[root@localhost]tar –zxvf gdb-6.6.tar.gz[root@localhost]cd gdb-6.6配置很简单,只需要指定目标板体系结构和安装路径即可[root@localhost]mkdir /opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/gdb6.6[root@localhost]./configure --target=arm-softfloat-linux-gnu --prefix=/opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/gdb6.6 -v[root@localhost]make[root@localhost]make install顺利的话,则在 gdb6.6 下生成新的目录,其中 gdb 工具就在 bin 目录下。
[root@localhost]ls –l /opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/gdb6.6/bin总用量 30476-rwxr-xr-x 1 root root 14335251 12 月 29 15:53 arm-softfloat-linux-gnu-gdb-rwxr-xr-x 1 root root 14335296 12 月 29 15:53 arm-softfloat-linux-gnu-gdbtui-rwxr-xr-x 1 root root 2489663 12 月 29 15:52 arm-softfloat-linux-gnu-run同样在环境变量中添加 gdb 的路径[root@localhost]export PATH=$PATH :/opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/gdb6.6/bin今后调试程序的时候,用 arm-softfloat-linux-gnu-gdb 来调试。
gdbserver 的编译[root@localhost]cd gdb-6.6[root@localhost]cd gdb/gdbserver[root@localhost] ./configure --target=arm-softfloat-linux-gnu –-host=arm-softfloat-linux-gnu[root@localhost] make CC=/opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc如果不出错的话,将在当前目录下生成两个可执行文件:gdbserver 和gdbreplay以后就可以用 gdb+gdbserver 调试我们开发板上的程序了至此,我们的交叉编译工具链已经基本建立可以用来作为我们 bootloader 的编译环境了/*******************************************************说说我遇到的问题:1. ./configure --target=arm-softfloat-linux-gnu –-host=arm-softfloat-linux-gnu我改为:./configure --target=arm-linux --prefix=/usr/local/arm/3.4.1/gdb6.6我要求安装在/usr/local/arm/3.4.1/gdb6.6 目录下,host 表示是 arm-linux 主机2. 在编译时遇到错误:/usr/local/arm/3.4.1/bin/arm-linux-gcc -c -Wall -g -O2 -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd linux-arm-low.clinux-arm-low.c:35:21: sys/reg.h: No such file or directory因为 sys/reg.h 在 Redhat /usr/include/sys/reg.h 目录中,所以可以加上 -I/usr/include然后单独运行:/usr/local/arm/3.4.1/bin/arm-linux-gcc -c -Wall -g -O2 -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd -I/usr/include linux-arm-low.cOK!!!!!3.然后运行 make CC=/usr/........(arm-linux-gcc 的绝对位置)4.然后运行 make install在我定义的 prefix (/usr/local/arm/3.4.1/gdb6.6)下,在 bin/下有一个 arm-linux-gdbserver 哈哈,爽!!!!GDB+GDBServer 的使用在目标系统上启动 gdbserver,其实就是在超级终端下或者 minicom 下启动gdbserver。
这里将 gdbserver 放在宿主机的 NFS 设置的共享目录下/home/zzl,该目录挂载在目标板/work 下宿主机的 ip 为 192.168.1.1,目标板的 ip 为192.168.1.33超级终端或者 minicom 下[root@localhost]cd /work[root@localhost]./gdbserver 192.168.1.1:1234 hello出现提示:Process /work/hello created: pid=69Listening on port 1234这时切换到宿主机的控制台,运行[root@localhost] arm-softfloat-linux-gnu-gdb hello(gdb) target remote 192.168.2.33:1234出现提示:Remote debugging using 192.168.1.33:1234[New thread 80][Switching to thread 80]0x40002a90 in ??()同时在 minicom 下提示:Remote debugging from host 192.168.2.100(gdb)连接成功,这时候就可以输入各种 gdb 命令如 list、continue、next、step、break等进行程序调试了。
/*******************************************************1. 将 gdbserver 或者 arm-linux-gdbserver ftp 到开发板上,使之可以运行2. 开发板上的 hello 文件可能是运行 arm-linux-strip 命令后的文件,size 很小,在 Linux 主机上不能用 strip 命令生成的 hello 文件,使用原始的 hello 文件对于 GDBServer 出现的问题1. GDBServer 调试时出现 packet error 问题主要是虚拟机与目标机的网络连接要经过 windows,数据包容易丢失换到Linux 系统下则恢复正常感谢原创作者 本文来自 CSDN 博客,转载请标明出处:。












