原文地址: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即可開始調試,記得設置斷點。