1 前言

        使用海思平台上(编译工具链:arm-himix200-linux)交叉编译 GDB 工具(使用版本8.2,之前用过10.2的版本,在编译 gdbserver 遇到编译出错的问题,因为关联了其他静态库等,尝试解决,但是遇到了一些其他问题,因为时间问题折腾了一段时间就放弃使用10.2的版本了)。

        通过使用 gdb+gdbserver 远程调试目标板,之后可以通过 VSCode 配置好后实现和 IDE 集成开发环境一样的比较直观方便调试。


2 编译

2.1 前期准备

        1)下载 gdb(网上很多,搜素就能下载,我选择的是 gdb-8.2)

        2)解压缩,输入指令解压 tar -vxzf gdb-8.2.tar.gz

        3)进入解压后的目录中 cd gdb-8.2

2.2 环境配置

2.2.1 编译 gdb

1)配置生成 Makefile 文件

./configure --target=arm-himix200-linux --prefix=~/gdbTool

2)编译、安装

make & make install

2.2.2 编译 gdbserver

1)进入 gdbserver 目录下(不同的版本路径不一样,比如 gdb-8.2 的路径为 gdb-8.2/gdb/gdbserver,而 gdb-10.2 的路径为 gdb-10.2/gdbserver),则指令为cd gdb/gdbserver

2)在 gdbserver 目录下配置生成 Makefile 文件

./configure --host=arm-himix200-linux --prefix=~/gdbTool

3)编译、安装(会在--prefix 指定的目录下生成 bin 目录,gdbserver 就在 bin 目录下)

make & make install

3 使用步骤

3.1 前期准备

将之前生成的 gdbserver 调试程序放在目标板上或者通过 nfs 方式运行也可以.这样就可以用 gdb 和 gdbserve 远程调用来调试目标板上的程序了。

3.2 执行 gdbserver

在目标板上运行需要调试的程序,如

./gdbserver --remote-debug 192.168.1.100:8005 test

3.3 执行 gdb

1、在宿主机上运行 gdb 程序

./arm-himix200-linux-gdb test

2、进入 gdb 调试状态后,连接目标板

(gdb) target remote 192.168.1.102:8005

3、连接成功后则开始运行,宿主机之后根据 gdb 指令设置断点、单步调试等功能进行调试

(gdb) r

GDB常用的调试指令

GDB 调试器提供有大量的调试选项,可满足大部分场景中调试代码的需要。如表所示,罗列了几个最常用的调试指令(包含指令缩写)及各自的作用:

 

06-16 18:43