前言:本文旨在幫助需要在遠(yuǎn)程主機(jī)編譯程序鸠蚪,又在另一遠(yuǎn)程系統(tǒng)(比如開發(fā)板)調(diào)試程序的朋友孙咪,講解了CLion的關(guān)鍵配置宁改,實現(xiàn)本地編輯程序樊破,上傳到服務(wù)器編譯厅篓,把可執(zhí)行文件下載到本地,debug時上傳到開發(fā)板捶码,配合開發(fā)板中的gdb server進(jìn)行調(diào)試羽氮。如何配置交叉編譯工具鏈、開發(fā)板安裝gdb server等請自行查閱其他地方惫恼。
CLion官方幫助文檔:Complicated remote scenarios | CLion Documentation (jetbrains.com)档押,JetBrains自家的文章寫的也很清楚了,有興趣的朋友可以直接看英文原文祈纯。
準(zhǔn)備環(huán)境:
1令宿、CLion軟件:下載 CLion:用于 C/C++ 開發(fā)的智能跨平臺 IDE (jetbrains.com)。
2腕窥、交叉編譯環(huán)境粒没,比如ubuntu主機(jī)+arm-xx-gcc,ubuntu主機(jī)需要安裝較新版本的cmake簇爆,ubuntu自帶的cmake版本太低癞松,可能無法配置成功。
3入蛆、開發(fā)板帶有g(shù)db server响蓉。
正文:
1、CLion配置交叉編譯工具鏈哨毁。
配置之前枫甲,先創(chuàng)建一個“C Executable”工程,并創(chuàng)建一個debug目錄,放置之后編譯好的可執(zhí)行文件想幻。
參考配置:
Name:工具鏈名稱粱栖。
Credentials:連接ubuntu主機(jī)的憑據(jù)。
C Compiler:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf-gcc
C++ Compiler:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf-g++
配置完工具鏈后脏毯,我們還要將其設(shè)置為當(dāng)前項目的CMake工具闹究。
2、編譯可執(zhí)行文件并下載到本地抄沮。
工具鏈配置好之后跋核,我們點擊右上角的“編譯”(小錘子)按鈕岖瑰。成功編譯后叛买,我們可以看到如下信息:可執(zhí)行文件的名稱就是當(dāng)前工程的名稱“Remote_GDB_ARM_Board”。
接著蹋订,我們可以直接在CLion打開一個終端率挣,用scp命令下載到當(dāng)前工程的debug目錄。
參考命令:scp book@192.168.5.11:/tmp/tmp.qlQJ83CF4j/cmake-build-debug-arm-build-tencentcloud/Remote_GDB_ARM_Board debug
可以通過配置密鑰對的方法露戒,來實現(xiàn)免密連接服務(wù)器椒功,有關(guān)配置請查閱其他文章。
3智什、CLion配置開發(fā)板的gdb server动漾。
接下來,我們點擊頂部工具欄“編譯按鈕”左側(cè)的下拉框荠锭,點擊“Edit Configurations“旱眯。
左上角“+”號,選擇新增一個“Remote GDB Server”证九。
然后填寫紅框中的內(nèi)容:
Name:隨便删豺,可以寫gdb server。
Executable:就選擇我們之前下載到debug目錄的可執(zhí)行文件愧怜。
Credentials:填寫連接開發(fā)板的憑據(jù)呀页。
Upload Path:選擇上傳到開發(fā)板的目錄。
target remote args:gdb server IP+端口號拥坛。
下面是我自己的配置蓬蝶。
4、配置“Run external tool”猜惋,用 scp 下載文件到本地疾党。(非必要)
添加玩gdb server的信息后,下方的“before launch”惨奕,我們新增一個外部工具雪位,每次啟動調(diào)試前執(zhí)行scp命令,從服務(wù)器下載可執(zhí)行文件梨撞。前提是我們實現(xiàn)了免密登錄服務(wù)器雹洗,否則執(zhí)行scp無法輸入密碼香罐,這個“Run external tool”是無法成功執(zhí)行的,調(diào)試也跑不起來时肿”用#或者我們每次手動在終端執(zhí)行scp,就可以輸入密碼了螃成。
Name:copy_binary旦签。
Program:scp
Arguemnts:book@192.168.5.11:/tmp/tmp.qlQJ83CF4j/cmake-build-debug-arm-build-tencentcloud/Remote_GDB_ARM_Board debug
配置完成后,我們先切換到gdb sever的配置寸宏,然后打個斷點宁炫,調(diào)試下試試,如下圖:
5氮凝、使用gdb server時如何傳入程序參數(shù)羔巢。
還是編輯gdb server的配置頁面,然后我們填寫“GDB Server args”罩阵,用逗號分隔“:1234 /mnt/sd/Remote_GDB_ARM_Board /dev/input/event0”竿秆,即”:端口號 可執(zhí)行文件 程序參數(shù)“。
參考文獻(xiàn):
Complicated remote scenarios | CLion Documentation (jetbrains.com)
Specify "Program Arguments" in "Remote GDB Server" : CPP-22678 (jetbrains.com)
External tools | CLion Documentation (jetbrains.com)
Remote SSH External Tools | CLion Documentation (jetbrains.com)