一、下载gdb源码
下载地址:Index of /gnu/gdb
二、gdb编译
1、解压源码包(根据后缀,选择合适的解压方式)
$ tar zxvf gdb-7.12.tar.gz
$ cd gdb-7.12/
2、生成Makefile
$ ./configure --target=aarch64-linux-gnu --prefix=$PWD/__install
–target:指定目标平台。–prefix:指定安装路径
3、编译并安装
$ make
4、安装
$ make install
执行此命令后会在当前目录下生成文件夹__install/里面包含可执行文件、头文件、动态库文件等.
目前只用到bin/目录下的可执行文件arm-linux-gdb,执行下面命令:
$ sudo cp __install/bin/arm-linux-gdb /usr/bin/
将生成的aarch64-linux-gnu-gdb文件拷贝到系统/usr/bin/目录下,这样便可以在任何地方很方便的调用。
三、gdbserver编译
板端需要gdbserver
1、生成Makefile
$ cd gdb/gdbserver/
$ ./configure --target=arm-linux --host=aarch64-linux-gnu
–host:指定交叉工具链,aarch64-linux-gnu为我的目标系统的交叉工具链。
2、编译
$ make
编译gdbserver不需要执行make install命令,make之后在当前目录下会生成可执行程序gdbserver,将其拷贝到目标系统中。
四、调试
1、编译要调试的程序
$ aarch64-linux-gnu-gcc -g test.c -o test
为了能够gdb调试,在编译程序的时候必须加-g选项,将生成的可执行文件test拷贝到目标板中。
2、环境配置
宿主机IP:192.168.0.139
目标板IP:192.168.0.138
3、板上运行gdbserver
# cd /
# gdbserver 192.168.0.139:6666 /test
4、pc机上运行aarch64-linux-gnu-gdb
$ aarch64-linux-gnu-gdb test
5、启动之后,最后一行会出现(gdb),等待输入指令,连接gdbserver
(gdb) target remote 192.168.0.138:6666
五、问题及解决办法
库文件加载失败
解决办法:指定加载失败的库文件的路径
(gdb) set solib-search-path /home/zxd/MerriiLinux_qa1_qe1/boot/config/gcc-linaro/arm-linux-gnueabi/libc/lib/