GDB 在arm开发板上的远程调试

嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。调试时,应用程序在嵌入式目标系统上运行,而gdb调试在Host端。
一、编译安装gdb+gdbserver

这是我的编写的编译脚本:

#!/bin/sh
rundir=$(pwd)
tar xvf gdb-6.7.1.tar.bz2
mkdir gdbserv-build
mkdir gdb-arm-linux-build

#编译arm-linux-gdb
cd gdb-arm-linux-build
CC=cc ../gdb-6.7.1/configure --target=arm-linux --prefix=$rundir/gdb_install/gdb-arm-linux
make
make install

#交叉编译gdbserver

cd ../gdbserv-build/
CC=arm-linux-gcc ../gdb-6.7.1/gdb/gdbserver/configure --host=arm-linux --prefix=$rundir/gdb_install/gdbserv
make
make install
cd ..
rm gdbserv-build -rf
rm gdb-arm-linux-build -rf
rm gdb-6.7.1 -rf

二、调试使用:  

1、交叉编译,带参数-g加入调试信息。

假设要调试的程序为test.c。

#> arm-linux-gcc -g test.c -o test

2、在Target Board开启gdbserver

#> gdbserver  <host-ip>:port test

#> gdbserver 192.168.0.1:2234 test

gdbserver开始监听2345端口(你也可以设其他的值),然后启动test,你会看到“Process test created:pid=88”

3、回到Host端

#> arm-linux-gdb /mnt/nfs/test

最后一行显示:This GDB was configured as “--host=i686-pc-linux-gnu,--target=arm-linux”...

说明此gdb在X86的Host上运行,但是调试目标是ARM代码。

(gdb)target remote <target-board-ip>:port

gdb> target remote 192.168.0.12:2234

注意:你的端口号必须与gdbserver开启的端口号一致,这样才能进行通信。

建立链接后,就可以进行调试了。调试在Host端,跟gdb调试方法相同。注意的是要用“c”来执行命令,不能用“r”。因为程序已经在Target Board上面由gdbserver启动了。结果输出是在Target Board端,用超级终端查看。

 

 

注意: 你可能会遇到主机和arm板都连同了但是却没有调试信息!
你可以在pc机端
gdb> symbol-file ../test (调用调试信息)

或者是:

#> ./arm-linux-gdb ../test 

 

备注:就是要在开发板和pc主机上都要有运行的文件,调试信息是从本地的文件(../test)提取的!

猜你喜欢

转载自blog.csdn.net/special00/article/details/82564030