安装包:
gdb: http://ftp.gnu.org/gnu/gdb/ (版本:gdb-7.12)
ncurses: http://ftp.gnu.org/gnu/ncurses/ (版本:ncurses-5.6)
交叉编译:
1. ncurses的交叉编译
配置:
./configure --host=arm-linux --prefix=/home/WORK/DSPG/yizhi/ncursesout --without-ada --enable-termcap --with-shared
编译:
make
安装:
make install
2. gdb的交叉编译
配置:(ncurses相关路径和上面--prefix一致)
./configure --prefix=/home/WORK/DSPG/yizhi/gdbout --host=arm-linux --disable-werror LDFLAGS="-L/home/WORK/DSPG/yizhi/ncursesout/lib" CPPFLAGS="-I/home/WORK/DSPG/yizhi/ncursesout/include"
编译:
make
安装:
make install
在生成的gdbout/bin文件夹中包含我们需要的gdbserver程序
gdb + gdbserver的远程调试
调试原理
GDB调试是应用程序在开发板上运行,然后在PC机上对开发板上的应用程序进行调试,PC机运行GDB,开发板上运行GDBServer。在应用程序调试的时候,pc机上的gdb向开发板上的GDBServer发出命令,而开发板上的gdbserver就会向应用程序发出信号,使应用程序停下来或者完成其他一些工作。
为调试方便,其实要调试的程序也不一定非得在开发板上,开发板可通过mount虚拟机上的程序,再配合gdbserver,以达到远程调试的目的。下面举一例子。
假设我要在开发板上调试test程序,可通过以下步骤来完成。
1. 将test程序和开发板的gdbserver放在虚拟机的/nfsboot文件夹下
2. 开发板mount该文件夹(192.168.0.132是虚拟机地址)
mount -o nolock 192.168.0.132:/nfsboot /mnt
3. 在开发板上通过gdbserver打开test程序的调试(192.168.1.53是开发板地址,端口随意)
/mnt/gdbserver 192.168.1.53:2233 /mnt/test
4. 在虚拟机上运行gdb(该gdb是适合虚拟机平台的gdb,而不是上面编译出来的gdb),并连接gdbserver(端口号和上面gdbserver打开的端口号一致)
gdb
target remote 192.168.1.53:2233
开发板上会显示连接成功
5. 在虚拟机上输入命令即可进行调试,如输入c,即可开始程序