GDB 远程调试1——交叉编译

GDB 远程调试

  1. 下载gdb源码

    这里选择的是 7.12的版本

    其它版本GDB源码

  2. 解压并配置

    tar zxvf gdb-7.4.tar.gz
    ./configure --target= arm-buildroot-linux-gnueabihf --prefix=`pwd`/_build
    

    –target 你的交叉编译链前缀

    –prefix 配置、编译、安装目录

    这些选项的定义都可以在, ./configure --help 中查看到

  3. 编译

    make -j4
    
  4. 安装

    make install 
    

    这样在 _build 目录下就可以看到编译安装后的文件

  5. 编译gdb server

    cd gdb/gdbserver
    
    ./configure --target=arm-buildroot-linux-gnueabihf  --host=arm-buildroot-linux-gnueabihf
    
  6. 编译

    make -j4
    

    编译无误后,在当前目录下就有有一个 gdbserver 的可执行文件。

错误情况

在编译过程中出现

linux-arm-low.c: In function ‘CORE_ADDR arm_sigreturn_next_pc(regcache*, int, int*)’:
linux-arm-low.c:769:29: error: ‘__NR_sigreturn’ was not declared in this scope
   gdb_assert (svc_number == __NR_sigreturn || svc_number == __NR_rt_sigreturn);
                             ^
./../common/gdb_assert.h:34:13: note: in definition of macro ‘gdb_assert’
   ((void) ((expr) ? 0 :                                                       \
             ^
linux-arm-low.c: In function ‘CORE_ADDR get_next_pcs_syscall_next_pc(arm_get_next_pcs*)’:
linux-arm-low.c:823:21: error: ‘__NR_sigreturn’ was not declared in this scope
   if (svc_number == __NR_sigreturn || svc_number == __NR_rt_sigreturn)
                     ^
make: *** [linux-arm-low.o] 错误 1

解决方式:

在这个linux-arm-low.c文件添加文件包含。

#ifndef  __NR_sigreturn
#include <asm/unistd.h>
#endif

然后 make clean ,再次make 即可。

远程调试之gdb移植

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值