GDB 远程调试
-
下载gdb源码
这里选择的是 7.12的版本
-
解压并配置
tar zxvf gdb-7.4.tar.gz ./configure --target= arm-buildroot-linux-gnueabihf --prefix=`pwd`/_build
–target 你的交叉编译链前缀
–prefix 配置、编译、安装目录
这些选项的定义都可以在,
./configure --help
中查看到 -
编译
make -j4
-
安装
make install
这样在 _build 目录下就可以看到编译安装后的文件
-
编译gdb server
cd gdb/gdbserver ./configure --target=arm-buildroot-linux-gnueabihf --host=arm-buildroot-linux-gnueabihf
-
编译
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 即可。