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

本文介绍了如何进行gdb的交叉编译,包括ncurses的交叉编译过程,并详细阐述了gdb与gdbserver结合进行远程调试的原理与步骤,通过在虚拟机上运行gdb连接开发板上的gdbserver实现对开发板上程序的调试。
摘要由CSDN通过智能技术生成

安装包:

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值