Qt下使用GDB遠程調試ARM板

原文地址:http://blog.sina.com.cn/s/blog_64053138010117ze.html


第一部分: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 <stdio.h>

int func(int n)

{

  int sum=0, i;

  for (i=0; i<n; 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即可開始調試,記得設置斷點。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章