使用Qt Creator作為Linux IDE,代替Vim:實現兩台Linux電腦遠程部署和調試(一台電腦有案頭系統,一台電腦無案頭系統)__Linux

來源:互聯網
上載者:User

尊重作者,支援原創,如需轉載,請附上原地址:http://blog.csdn.net/libaineu2004/article/details/62423830

 

序言

考慮到程式員在無案頭Linux的環境下編寫C/C++程式,如果使用原生的Vim編輯和單步斷點調試比較麻煩,不利於新手使用,所以筆者嘗試使用Qt實現兩台Linux電腦遠程部署和調試。即程式員在調試電腦使用Qt編寫代碼,然後把目標程式部署在正式電腦上。本篇目的是協助大家擺脫vim,一勞永逸,解決痛點。請讀者不要誤以為Qt Creator只能用來做案頭軟體的,其實它也可以建立純C/C++非案頭的工程,既可以qmake也可以cmake編譯。準備兩台電腦做驗證,一台有Linux案頭系統,使用Qt Creator用於編輯源碼調試環境,另一台只有終端,無Linux案頭系統,用於伺服器正式環境。Qt Linux版本安裝在調試機。本文以qt-opensource-linux-x64-5.7.1.run為例。Qt下載網址是:http://download.qt.io/official_releases/qt/

兩台電腦(注意:本文以調試機和目標機作為區分描述)使用網線串連,相關情況如圖所示:

 


本文

1、確保在Linux調試機安裝了gcc和gdb。

不會安裝的請參考以下文章:

http://www.linuxidc.com/Linux/2015-01/112057.htm

http://blog.csdn.net/yang1982_0907/article/details/38461127                                                          

注意事項:

必須安裝有了gcc才能編譯gdb。CentOS 7自動安裝gcc的命令是:yum -y install gcc make glibc

安裝完gcc,執行終端命令gcc -v可以查看安裝的版本資訊。CentOS 7預設的gcc版本是V4.8.5。

CentOS 7查看ip地址的命令是:ip addr

下載gdb源碼的網址是:http://ftp.gnu.org/gnu/gdb/ 編譯gdb源碼之前,必須安裝Texinfo文檔系統。否則,編譯gdb源碼時會報錯configure: error: no termcap library found。

以CentOS 7為例,安裝命令是yum install ncurses-devel

以源碼gdb-7.6.1.tar.gz為例,執行命令tar xzvf gdb-7.6.1.tar.gz解壓之後,在一級目錄/gdb-7.6.1/,執行以下命令編譯:

cd gdb-7.6.1

./configure

make

make install

然後會在路徑/usr/local/bin/產生gdb檔案,執行終端命令gdb -v可以查看安裝的版本資訊。


2、在Linux目標機安裝gdb和gdbserver

調試機和目標機的gdb版本必須一致。編譯方法一致。

以源碼gdb-7.6.1.tar.gz為例,執行命令tar xzvf gdb-7.6.1.tar.gz解壓之後,在一級目錄/gdb-7.6.1/,執行以下命令編譯:

cd gdb-7.6.1

./configure

make

make install

然後會在路徑/usr/local/bin/同時產生gdb和gdbserver檔案。

目標機的gdbserver至關重要,沒有它就無法單步斷點調試。切記。驗證gdb和gdbserver安裝正確的方法是:

執行終端命令

gdb -v

gdbserver --version

如果都能正確顯示版本號碼,說明安裝成功。

如果是想單獨編譯gdbserver(註:我們這裡不需要再執行這步驟,因為上面的方法已經包含了),則需要進入/gdb-7.6.1/gdb/gdbserver, 執行以下命令編譯:

./configure

make

make install

然後會在路徑/usr/local/bin/產生gdbserver檔案,執行終端命令gdbserver --version可以查看安裝的版本資訊。


3、在Linux調試機設定目標機的資訊

Qt Creator菜單->Tools->Options->Devices->Add

建立Linux的通用裝置:

 

填入目標機的IP地址(區域網路和公網IP均支援),root和密碼:

 

SSH連通之後的表現:


配置遠端偵錯和編譯的環境,自訂命名為“firecatTest”:

 

4、建立一個Non-Qt Project做測實驗證,Non-Qt Project就是指非Qt庫的編程,即原生態的Linux C/C++編程。

Kit Selection要選擇“firecatTest”:


如果是採用qmake編譯方式,需要在工程的.pro檔案加入以下幾句話:

#遠程部署,定義編譯產生的檔案在遠程linux目標機的路徑,路徑可以自訂

target.path=/home/firecat/Test

INSTALLS += target

 

編譯,運行,大功告成。會在目標機/home/firecat/Test路徑下產生執行檔案mywin32。

如果採用cmake方式,文章末尾會講述方法。

 

 

5、怎麼遠程單步調試。前提條件先要關閉Linux目標機的防火牆。

CentOS 7操作防火牆的命令是:

firewall-cmd --state #查看防火牆是否啟用

systemctl stop firewalld #關閉防火牆

 

關閉防火牆之後怎麼辦。如何?單步斷點調試。記得文章步驟2描述的,要在目標機安裝好gdb和gdbserver。然後,

方法一(推薦):簡單明了,在調試機的工程源碼下好斷點,直接按F5,採用預設單步調試。

 

方法二(不推薦):複雜很多。

(1)在Linux目標機終端運行gdbserver命令:

/usr/local/bin/gdbserver 172.16.6.166:9900 /home/firecat/Test/mywin32

其中172.16.6.166是調試機的IP地址,9900是隨意定的TCP連接埠號碼,mywin32是編程產生的目標執行檔案。

 

(2)在Linux調試機上,設定Qt單步調試的參數:

Qt Creator菜單->Debug->Start Debugging->Attach to Running Debug Server

其中,Server Port指的是TCP連接埠,Server address指的是目標機的IP地址;

Local executable指的是工程在本地(調試機)的組建檔案。

參數設定完畢,點擊ok按鈕,開始調試。。


6、如果不想使用qmake,而是cmake編譯和偵錯工具,怎麼實現。請訪問姊妹篇《使用Qt Creator作為Linux IDE,實現CMake編譯和單步調試》,網址是:

http://blog.csdn.net/libaineu2004/article/details/78448392

注意:CMake遠程產生的目標路徑,預設是/root/xxx。可以手動修改CMakeLists.txt檔案更改輸出路徑,SET(EXECUTABLE_OUTPUT_PATH "***").如此一來開發機和目標機的路徑都會有產生結果。我的實測結果是,貌似路徑裡面有home目錄,目標機就不行。例如SET(EXECUTABLE_OUTPUT_PATH "/home/12/"),結果檔案開發機在,但是目標機並不在,而是會在根目錄產生/12的檔案夾。再比如"/home/firecat/test"目標機也不在,而是根目錄下產生"test"檔案夾。

cmake_minimum_required(VERSION 2.8)project(untitled)add_executable(${PROJECT_NAME} "main.cpp" "test.cpp")##SET(EXECUTABLE_OUTPUT_PATH "/home/firecat/test/")SET(EXECUTABLE_OUTPUT_PATH "/hellotest/12/34")



尊重作者,支援原創,如需轉載,請附上原地址:http://blog.csdn.net/libaineu2004/article/details/62423830

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.