QT一鍵遠端除錯程式

2021-07-30 13:16:13 字數 3480 閱讀 4934

在嵌入式開發中,如何使用qt去除錯程式是很重要的。除錯無非分為以下幾種方式:

(1)最初級的方式就是編譯目標程式,然後拷貝到開發板,通過printf函式輸出一些除錯資訊來除錯程式。

(2)移植gdb,編譯完目標程式後,在開發板執行gdb server,然後使用qt遠端除錯。

(3)使用qt一鍵遠端除錯程式,需要將目標程式拷貝到開發板。

方式一不僅麻煩還很難找出問題。方式而雖然可以除錯,但很麻煩,每次編譯玩程式後都得開唄到開發板。第三種方式靈活簡單。本文是如何搭建第三種方式。過程中也包含了第二種方式。

主要分為以下幾個部分:

第一部分: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下ubuntu12.04

1、將gdb-7.7.tar.gz拷貝到任意的位置

2、解壓gdb-7.7.1.tar.gz

tar -zxvf gdb-7.4.tar.gz

3、編譯arm-linux-gdb(下面/usr/local是安裝目錄,可自行更改)

到目錄gdb-7.7.1下

cd gdb-7.7.1

$./configure --target=arm-linux--prefix=/usr/local/arm-gdb7.7 --with-python

target指明編譯生成的gdb用於除錯arm-linux程式,prefix指明安裝目錄

--with-python將python模組編譯進來。因為qt creator3.1版本開始,除錯必須有python功能。

ubuntu自帶python。位於/usr/bin/。

$make

如果make出現如下錯誤

checkint for python2.7... /usr/bin/python2.7

checkint for python2.7... no

configure: error: no usable python found at python2.7

則需要在執行apt-get install python-dev。安裝完成後再執行make。

#make install

這樣就可以在/usr/local/arm-gdb7.7/bin目錄下看到如下三個可執行檔案

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

4、編譯gdb client

#cd ./gdb/gdbserver 

(進入gdb-7.7.1目錄裡執行該句)

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

#make //編譯用於目標機的stub程式生成gdbserver是gdb客戶端程式,在板子上執行。

三,使用例程

1.編輯檔案

# geditgdbtest.c

#include

int func(int n)

return sum;}

intmain(void)

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 // 交叉編譯

假設 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-gdb7.7/bin/ (就是arm-gdb的目錄)

#cp gdbtest /usr/local/arm-gdb7.7/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

需要工具:arm開發板,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. debugger選擇之前安裝的gdb除錯工具,這裡是/home/alexon/arm-gdb7.7/bin/arm-linux-gdb

local executable選擇該工程編譯生成的本機上的可執行檔案,這裡是/home/alexon/mpiwork/1234-build-arm/1234

host and port設定的是目標板的ip以及剛才目標板定義的監視口

最後architecture選擇i386,ok即可開始除錯,記得設定斷點。

至此就是第二種除錯方法了。

Qtcreator 遠端除錯程式

在pc上使用qtcreator開發的程式想要在開發板上調試執行需要進行一些設定。1.首先,使用ssh登入到開發板 ssh root 192.168.1.136 以使用者名稱root登入ip位址為192.168.1.136的開發板。執行這條命令後會提示輸入密碼。root 192.168.1.136 s...

vs2003 遠端除錯程式

第一步 將 c program files microsoft visual studio net 2003 common7 packages debugger msvcmon.exe copy到目標機器 需要遠端除錯的機器 第二步 為msvcmon.exe 建立快捷方式,右鍵屬性新增 anyuse...

GDB除錯程式 一

gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具,主要完成以下四個方面的內容 1.啟動程式,讓陳程式按照自己的定義隨心所欲的執行。2.可以放程式在指定的斷點處停住。3.當程式挺住時,可以檢查程式發生的事情。4.動態改變程式的執行環境。gdb使用流程 1.編譯可執行檔案 gcc g zj...