天天看點

文章标題

說明

近期Qt IDE因為出色的跨平台特性。逐漸開始流行。編譯環境也內建了經常使用到的編譯調試工具。大部分玩Linux的高手應該是自己寫腳本來實作一鍵遠端部署和調試等指令。

可是對于新手不免有非常大難度。以下說說利用QT自帶的遠端部署工具和遠端調試工具gdbserver,遠端SSH工具。無需安裝NFS。

Gdbserver的安裝參見http://blog.chinaunix.net/uid-12461657-id-3048285.html

SSH的安裝依據自己目标闆安裝。

1遠端部署linux裝置加入

打開工具》選項》linux裝置》裝置配置頁籤

加入一個通用Linux裝置。這裡須要輸入裝置名稱,主機名稱是(ARM)目标闆IP位址,SSHport預設是22,username和password是你須要登入的賬戶。當然我建議登入root,當然這裡填寫自己目标闆的root賬戶名password。

文章标題

2将project加入遠端部署

目的是把執行檔案複制到目标闆指定檔案夾

點選左側《編輯》頁籤,打開XXX.proproject檔案,加入例如以下代碼

target.path = /opt

INSTALLS += target sources

上面代碼的意思加入目标闆檔案路徑,加入代碼後點選左側《項目》頁籤。打開執行《設定》标簽,對該項目加入遠端部署,點選加入。選擇《部署到遠端Linux主機》,配置裝置選擇①中加入的裝置。

文章标題

以下就能夠看到剛才加入的目标檔案路徑。目标闆可執行檔案就存放在這裡

文章标題

3添加額外的遠端指令

Qt遠端執行和調試時有兩個bug:

一是當第二次部署執行的時候。sftp部署會失敗。彈出錯誤例如以下

文章标題

造成這問題的解決辦法非常easy,就是舊可執行檔案無法被新的檔案覆寫,sftp也不能怎麼加強制覆寫的參數。

二是當遠端執行後,遠端指令無法再點選停止button後退出遠端指令程序。也就是說當你執行N次後目标闆不斷開閉程序。導緻延遲越來越大。越來越卡。

能夠用PS指令來驗證這個說法。

解決的方法是添加一條遠端部署指令删除原來的檔案,同一時候也終止上一次遠指令。寫一個腳本檔案我的名稱名kill_list.sh。腳本檔案例如以下

PID=<code>ps ax | grep $1 | awk '{if ($0 !~/grep/) {print $1}}'</code>

# echo “PID=PID”if[−n“PID” ]; then

kill -9 $PID &gt;/dev/null 2&gt;&amp;1

fi

點選《加入部署步驟》加入例如以下指令行:/opt/kill_list.sh是腳本檔案路徑,RichBike是可執行程式檔案,&amp;不堵塞。目的是找到包括這個可執行檔案名稱的程式将它終止。

文章标題

4遠端執行配置

目的是程式在目标闆執行,并且将資訊列印顯示在本地,進而實作遠端執行

點選《加入》選擇在《遠端裝置是執行》,參數選項的-qws假設目标闆之前沒有窗體程式那麼你就須要加上它。

文章标題

5遠端執行測試

建議project在改變編譯環境時執行又一次建構

點選執行button,假設正常執行,執行結果例如以下。

文章标題

6遠端部署調試

打開工具》選項》編譯和執行》工具鍊頁籤

加入一個自己定義工具鍊。也就是GCC編譯器和調試器。編譯器路徑加入自己arm-linux-gcc編譯器。arm-fsl-linux-gnueabi-gcc是我安裝的交叉編譯器。arm-linux-gdb是自己交叉編譯環境的調試器。這裡也能夠用Gdbserver的調試器,假設環境變量配置檔案正确的話編譯器和調試器僅僅輸入名稱就能夠,會自己主動生成絕對路徑。

文章标題

7配置調試器

打開工具》選項》調試器》GDB頁籤

Gdb啟動腳本:填寫Gdbserver的arm-linux-gdb絕對檔案夾,逾時時間預設

文章标題

8加入調試器

點選左側《項目》的《建構設定》标簽。在建構設定欄中加入qt的KIT。這裡選擇調試。

選擇執行。無法進行調試。

文章标題

9斷點調試程式

在程式中先設定斷點,點選調試button,假設正常執行,執行結果例如以下

能夠看到程式程序PID、連接配接port号、連接配接IP。

文章标題

繼續閱讀