Qt下使用GDB远程调试ARM板

第一部分:GDB调试工具安装
一、搭建过程
在虚拟机Linux下ubuntu14.04,arm为树莓派2代B型
0.下载gdb-7.9.tar.gz(http://www.gnu.org/software/gdb/download/)
手动到网页下载
1、将gdb-7.9.tar.gz拷贝到任意的位置
2、解压gdb-7.9.tar.gz
tar -zxvf gdb-7.9.tar.gz
3、编译arm-linux-gdb(下面~/arm-unknown-linux-gnueabihf-gdb是安装目录,可自行更改)
到目录gdb-7.9下
cd gdb-7.9
mkdir ~/arm-unknown-linux-gnueabihf-gdb
./configure –target=arm-linux –prefix=/home/zinc/arm-unknown-linux-gnueabihf-gdb -v
target指明编译生成的GDB用于调试ARM-LINUX程序,prefix指明安装目录
make
make install
nano -w ~/.bash_profile
export PATH=$PATH:/home/zinc/arm-unknown-linux-gnueabihf-gdb/bin –把arm-linux-gdb加入环境变量
这样就可以在/home/zinc/arm-unknown-linux-gnueabihf-gdb/bin目录下看到如下三个可执行文件
arm-linux-gdb arm-linux-gdbtui arm-linux-run
4、编译GDB Server
cd ./gdb/gdbserver (进入gdb-7.4目录里执行该句)
export PATH=$PATH:/home/zinc/arm-unknown-linux-gnueabihf-gdb/bin
./configure –target=arm-linux –host=arm-linux
nano -w config.h
//#define HAVE_SYS_REG_H 1 //注释此句
make CC=arm-unknown-linux-gnueabihf-gcc //编译用于目标机的stub程序生成gdbserver是GDB客户端程序,在板子上运行。
5、将gdbserver通过你搭建的环境下载到开发板

二、使用例程
1.编辑文件
# geditgdbtest.c

#include 
int func(int n)
{
  int sum=0, i;
  for (i=0; i

# arm-unknown-linux-gnueabihf-gcc -g gdbtest.c -o gdbtest // 交叉编译

2.下载文件到目标板: gdbtest和gdbserver
假设:
host pc ip:172.16.1.254
board ip:172.16.1.116
将文件拷贝到目标板上

3.运行调试
client board:
./gdbserver 172.16.1.116:1234 gdbtest //目标板上运行gdbtest 监听端口1234
host pc:
export PATH=$PATH:/home/zinc/arm-unknown-linux-gnueabihf-gdb/bin
测试
#arm-linux-gdb gdbtest
(gdb)target remote 172.16.1.116:1234 // 连接到开发板 成功后就可以进行调试
(gdb)list or l
(gdb)break func
(gdb)break 22
(gdb)info br
(gdb)continue orc // 这里不能用 run
(gdb)next or n
(gdb)print or presult
(gdb)finish // 跳出func函数
(gdb)next
(gdb)quit

第二部分:Qt下使用GDB远程调试ARM板
需要工具:ARM开发板(树莓派2代B型),GDB调试工具,Qt,nfs服务器
1、GDB的安装,参照上文
2、启动nfs服务器(一般都默认启动),目标板挂载nfs共享文件夹,这里目标板的目录是
/root/test
3、使用Qt创建一个工程,并把整个工程目录(如gdbtest和qt5_test-build-arm)创建到nfs服务器的共享根目录下面。这里我们用的是
~/nfsroot
4、编译工程,此时会同步在目标板上生成可执行文件
5、目标板上启动目标程序的GDB调试模式
#./gdbserver 172.16.1.116:1234 /root/test/gdbtest -qws
第一个是gdb服务器,第二个参数是主机ID和自定义的监视口,第三个参数是目标板上的目标程序,最后一个是-qws参数。
6、Qt菜单栏,选择debug->start debugging->start andattach to remote application.
Debugger选择之前安装的gdb调试工具,这里是/home/zinc/arm-unknown-linux-gnueabihf-gdb/bin/arm-linux-gdb
Local executable选择该工程编译生成的本机上的可执行文件,这里是/root/test/gdbtest
Host and port设置的是目标板的IP以及刚才目标板定义的监视口
最后Architecture选择i386,OK即可开始调试,记得设置断点。

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在C/C++分类目录。将固定链接加入收藏夹。