gdb移植及基于gdb+gdbserver的远程调试

安装包:

    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,即可开始程序



猜你喜欢

转载自blog.csdn.net/m0_37251040/article/details/80683005
今日推荐