Qt下使用GDB远程调试ARM板

第一部分:GDB调试工具安装

一.预处理(否则MAKE时候有错误)

sudo apt-getinstall texinfo

sudo apt-getinstall libncurses5-dev

sudo apt-getinstall m4

sudo apt-getinstall flex

sudo apt-getinstall bison

如果不做预处理,MAKE可能会出现下述错误

1、error: no termcap library found

2、error: makeinfo is required for compilation

二.搭建过程

在虚拟机Linux下ubuntu11.10,arm为华天正Real6410

0.下载gdb-7.4.tar.gz(http://www.gnu.org/software/gdb/download/)

   手动到网页下载

1、将gdb-7.4.tar.gz拷贝到任意的位置

2、解压gdb-7.4.tar.gz

   tar -zxvf gdb-7.4.tar.gz

3、编译arm-linux-gdb(下面/usr/local是安装目录,可自行更改)

  到目录gdb-7.4下

   cd gdb-7.4

   $./configure --target=arm-linux--prefix=/usr/local/arm-gdb -v

   target指明编译生成的GDB用于调试ARM-LINUX程序,prefix指明安装目录

   $make

   #make install

   #sudo gedit /etc/profile

  export PATH=$PATH:/usr/local/arm-gdb/bin --把arm-linux-gdb加入环境变量

   这样就可以在/usr/local/arm-gdb/bin目录下看到如下三个可执行文件

   arm-linux-gdb arm-linux-gdbtui arm-linux-run

4、编译GDB Client

   #cd ./gdb/gdbserver   (进入gdb-7.4目录里执行该句)

   #export PATH=$PATH:/usr/local/arm-gdb/bin

   #./configure --target=arm-linux--host=arm-linux

   #sudo gedit config.h

   //#define HAVA_SYS_REG_H //注释此句

   #make CC=arm-linux-gcc //编译用于目标机的stub程序生成gdbserver是GDB客户端程序,在板子上运行。

5、将gdbserver通过你搭建的环境下载到开发板(我的环境是nfs)

三,使用例程

1.编辑文件

# geditgdbtest.c

#include

int func(int n)

{

  int sum=0, i;

  for (i=0; i

    {

       sum += i;

   }

 return sum;

 }

 

 int

 main(void)

 {

 int i;

 long result = 0;

 for (i=0; i<=100; i++)

 {

      result += i;

 }

 printf("result[1-100] = %d \n",result);

 printf("resutl[1-225] = %d \n",func(255));

 return 0;

 }

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


2.下载文件到目标板: gdbtest和gdbserver

 假设 host pc ip:192.168.1.178

  board ip:192.168.1.20

将文件拷贝到目标板上(通过NFS或其他工具)

检查目标板上是否有gdbtest和gdbserver两个文件。(最好从共享文件夹把这两个文件移到目标板的其他一个目录下面)

 

3.运行调试

client board:

  #./gdbserver 192.168.1.178:1234 gdbtest //目标板上运行gdbtest 监听端口1234

host pc:

#cd/usr/local/arm-gdb/bin/ (就是arm-gdb的目录

#copy gdbtest/usr/local/arm-gdb/bin/ //将前面编译的文件gdbtest拷贝到此目录

 

测试

#./arm-linux-gdbgdbtest

  (gdb)target remote 192.168.0.232: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开发板(real6410),GDB调试工具,Qt,nfs服务器

1.   GDB的安装,参照上文

2.   启动nfs服务器(一般都默认启动),目标板挂载nfs共享文件夹,这里目标板的目录是

/work/zsaj/

3.   使用Qt创建一个工程,并把整个工程目录(如qt4_test和qt4_test-build-arm)创建到nfs服务器的共享根目录下面。这里我们用的是

/home/alexon/Mpiwork/

4.   编译工程,此时会同步在目标板上生成可执行文件

5.   目标板上启动目标程序的GDB调试模式

# ./gdbserver  192.168.1.22:1234  ./zsaj/1234-build-arm/1234  -qws

第一个是gdb服务器,第二个参数是主机ID和自定义的监视口,第三个参数是目标板上的目标程序,最后一个是-qws参数。


6.   Qt菜单栏,选择debug->start debugging->start andattach to remote application.


Debugger选择之前安装的gdb调试工具,这里是/home/alexon/arm-gdb/bin/arm-linux-gdb

Local executable选择该工程编译生成的本机上的可执行文件,这里是/home/alexon/Mpiwork/1234-build-arm/1234

Host and port设置的是目标板的IP以及刚才目标板定义的监视口

最后Architecture选择i386,OK即可开始调试,记得设置断点。

 

原文地址

你可能感兴趣的:(Qt,linux)