當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]序言考慮到程序員在無(wú)桌面Linux的環(huán)境下編寫(xiě)C/C++程序,如果使用原生的Vim編輯和單步斷點(diǎn)調(diào)試比較麻煩,不利于新手使用,所以筆者嘗試使用Qt實(shí)現(xiàn)兩臺(tái)Linux電腦遠(yuǎn)程部署和調(diào)試。即程序員在調(diào)試電

序言

考慮到程序員在無(wú)桌面Linux的環(huán)境下編寫(xiě)C/C++程序,如果使用原生的Vim編輯和單步斷點(diǎn)調(diào)試比較麻煩,不利于新手使用,所以筆者嘗試使用Qt實(shí)現(xiàn)兩臺(tái)Linux電腦遠(yuǎn)程部署和調(diào)試。即程序員在調(diào)試電腦使用Qt編寫(xiě)代碼,然后把目標(biāo)程序部署在正式電腦上。本篇目的是幫助大家擺脫vim,一勞永逸,解決痛點(diǎn)。請(qǐng)讀者不要誤以為Qt Creator只能用來(lái)做桌面軟件的,其實(shí)它也可以新建純C/C++非桌面的工程,既可以qmake也可以cmake編譯。準(zhǔn)備兩臺(tái)電腦做驗(yàn)證,一臺(tái)有Linux桌面系統(tǒng),使用Qt Creator用于編輯源碼調(diào)試環(huán)境,另一臺(tái)只有終端,無(wú)Linux桌面系統(tǒng),用于服務(wù)器正式環(huán)境。Qt Linux版本安裝在調(diào)試機(jī)。本文以qt-opensource-linux-x64-5.7.1.run為例。Qt下載網(wǎng)址是:http://download.qt.io/official_releases/qt/

兩臺(tái)電腦(注意:本文以調(diào)試機(jī)和目標(biāo)機(jī)作為區(qū)分描述)使用網(wǎng)線連接,相關(guān)情況如圖所示:

?

正文

1、確保在Linux調(diào)試機(jī)安裝了gcc和gdb。

不會(huì)安裝的請(qǐng)參考以下文章:

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

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

注意事項(xiàng):

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

安裝完gcc,執(zhí)行終端命令gcc -v可以查看安裝的版本信息。CentOS 7默認(rèn)的gcc版本是V4.8.5。

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

下載gdb源碼的網(wǎng)址是:http://ftp.gnu.org/gnu/gdb/?編譯gdb源碼之前,必須安裝Texinfo文檔系統(tǒng)。否則,編譯gdb源碼時(shí)會(huì)報(bào)錯(cuò)configure: error: no termcap library found。

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

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

cd gdb-7.6.1

./configure

make

make install

然后會(huì)在路徑/usr/local/bin/生成gdb文件,執(zhí)行終端命令gdb -v可以查看安裝的版本信息。

2、在Linux目標(biāo)機(jī)安裝gdb和gdbserver

調(diào)試機(jī)和目標(biāo)機(jī)的gdb版本必須一致。編譯方法一致。

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

cd gdb-7.6.1

./configure

make

make install

然后會(huì)在路徑/usr/local/bin/同時(shí)生成gdb和gdbserver文件。

目標(biāo)機(jī)的gdbserver至關(guān)重要,沒(méi)有它就無(wú)法單步斷點(diǎn)調(diào)試!切記!驗(yàn)證gdb和gdbserver安裝正確的方法是:

執(zhí)行終端命令

gdb -v

gdbserver --version

如果都能正確顯示版本號(hào),說(shuō)明安裝成功!

如果是想單獨(dú)編譯gdbserver(注:我們這里不需要再執(zhí)行這步驟,因?yàn)樯厦娴姆椒ㄒ呀?jīng)包含了),則需要進(jìn)入/gdb-7.6.1/gdb/gdbserver, 執(zhí)行以下命令編譯:

./configure

make

make install

然后會(huì)在路徑/usr/local/bin/生成gdbserver文件,執(zhí)行終端命令gdbserver --version可以查看安裝的版本信息。

3、在Linux調(diào)試機(jī)設(shè)置目標(biāo)機(jī)的信息

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

新建Linux的通用設(shè)備:

?

填入目標(biāo)機(jī)的IP地址(局域網(wǎng)和公網(wǎng)IP均支持),root和密碼:

?

SSH連通之后的表現(xiàn):


配置遠(yuǎn)程調(diào)試和編譯的環(huán)境,自定義命名為“firecatTest”:

4、新建一個(gè)Non-Qt Project做測(cè)試驗(yàn)證,Non-Qt Project就是指非Qt庫(kù)的編程,即原生態(tài)的Linux C/C++編程。

Kit Selection要選擇“firecatTest”:


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

#遠(yuǎn)程部署,定義編譯生成的文件在遠(yuǎn)程linux目標(biāo)機(jī)的路徑,路徑可以自定義

target.path=/home/firecat/Test

INSTALLS += target

?

編譯,運(yùn)行,大功告成!會(huì)在目標(biāo)機(jī)/home/firecat/Test路徑下生成執(zhí)行文件mywin32。

如果采用cmake方式,文章末尾會(huì)講述方法。

?

5、怎么遠(yuǎn)程單步調(diào)試?前提條件先要關(guān)閉Linux目標(biāo)機(jī)的防火墻。

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

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

systemctl stop firewalld #關(guān)閉防火墻

關(guān)閉防火墻之后怎么辦?如何實(shí)現(xiàn)單步斷點(diǎn)調(diào)試?記得文章步驟2描述的,要在目標(biāo)機(jī)安裝好gdb和gdbserver。然后,

方法一(推薦):簡(jiǎn)單明了,在調(diào)試機(jī)的工程源碼下好斷點(diǎn),直接按F5,采用默認(rèn)方式單步調(diào)試。

方法二(不推薦):復(fù)雜很多。

(1)在Linux目標(biāo)機(jī)終端運(yùn)行g(shù)dbserver命令:

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

其中172.16.6.166是調(diào)試機(jī)的IP地址,9900是隨意定的TCP端口號(hào),mywin32是編程生成的目標(biāo)執(zhí)行文件。

?

(2)在Linux調(diào)試機(jī)上,設(shè)置Qt單步調(diào)試的參數(shù):

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

其中,Server Port指的是TCP端口,Server address指的是目標(biāo)機(jī)的IP地址;

Local executable指的是工程在本地(調(diào)試機(jī))的生成文件。

參數(shù)設(shè)置完畢,點(diǎn)擊ok按鈕,開(kāi)始調(diào)試!!

6、如果不想使用qmake,而是cmake編譯和調(diào)試程序,怎么實(shí)現(xiàn)?請(qǐng)?jiān)L問(wèn)姊妹篇《使用Qt Creator作為L(zhǎng)inux IDE,實(shí)現(xiàn)CMake編譯和單步調(diào)試》,網(wǎng)址是:

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

注意:CMake遠(yuǎn)程生成的目標(biāo)路徑,默認(rèn)是/root/xxx??梢允謩?dòng)修改CMakeLists.txt文件更改輸出路徑,SET(EXECUTABLE_OUTPUT_PATH "***").如此一來(lái)開(kāi)發(fā)機(jī)和目標(biāo)機(jī)的路徑都會(huì)有生成結(jié)果。我的實(shí)測(cè)結(jié)果是,貌似路徑里面有home目錄,目標(biāo)機(jī)就不行?例如SET(EXECUTABLE_OUTPUT_PATH "/home/12/"),結(jié)果文件開(kāi)發(fā)機(jī)在,但是目標(biāo)機(jī)并不在,而是會(huì)在根目錄生成/12的文件夾。再比如"/home/firecat/test"目標(biāo)機(jī)也不在,而是根目錄下生成"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")  


原文鏈接:https://blog.csdn.net/libaineu2004/article/details/62423830

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉