如何優雅的遠程自動同步和遠程調試c++?

  • 2019 年 10 月 25 日
  • 筆記

/ 機智的小熊 /

一個不願意透露姓名的工程師,熱愛讀書,寫文章,熱愛交流,期待認識更多的大佬。

摘 要

在linux上用vim寫C++的時候,通常用gdb進行調試,不能隨心所欲的看程式碼和跳轉程式碼以及加watch(也有可能是因為我還沒有get正確的使用方法)。為此我發現Clion可以做到自動同步本場程式碼或自己下載遠程程式碼同步到本地,以及調試在遠程機器上運行的程式碼,分享給大家。

一、簡 介

CLion是一款專為開發 C 及 C++ 所設計的跨平台 IDE。它是以 IntelliJ 為基礎設計的,包含了許多智慧功能來提高開發人員的生產力,從而提升工作效率 。

二、環境準備

  • 作業系統:macOS / Windows
  • IDE: CLion
  • 源碼路徑:Node Master

三、自動同步

1)打開CLion的設置,進入到 Preferences | Build, Execution, Deployment | Deployment

2)點加號,添加一個遠程配置

3)設置為SFTP協議,設置遠程ip、port、pass然後點擊Test Connection,確認是否連接成功

1)切換到Mappings

2)設置本地的程式碼根目錄Local path

3)設置遠程的程式碼根目錄 Deployment path

1)上傳一個文件

2)Upload是上傳,Download是下載,本地與遠程所映射的目錄我們在上面設置過了

上傳成功

runlvm.sh文件更新成功,現在的時間是3月18 21:42

1)在Tool – Deployment – Automatic Upload(always) 設置為自動同步

2)自動同步的話可以在每次在本地改動程式碼的時候自己同步了

3)Sync with Deployed to 就是自動下載遠程程式碼到本地

手動上傳整個項目

上傳成功,上傳了100個文件

查看遠程目錄,確實成功了;好了,現在只要在本地有任何的改動都會自動同步到遠程了。

四、遠程調試

1、CentOS的依賴依賴

# cmake  yum install cmake -y    # gcc & gdb  yum install gcc-c++ -y  yum install gdb -y    #gdbserver  yum install gdb-gdbserver -y

2、添加GDB Remote Debug

本地克利翁配置

1)添加一個GDB遠程調試的配置 GDB Remote Debug

2)設置遠程訪問參數(target remote args):tcp:xx.xx.xx.xx:1234

3)設置遠程路徑和本地路徑的映射(Path mappings)

4)遠程調試連接成功後,像本地調試一樣,可以設置斷點,單步跟蹤等

5)調試需要本地和遠程的程式碼一致

3、兩個方法設置遠程配置

方法1—— 遠程gdbserver的啟動

遠程調試依賴gdbserver的來支援,通過gdbserver的啟動的程式,會先等待遠程調試的連接,連接成功後再啟動進程。

假設程式碼的根目錄:

/data/pzqu/read_phy_disk_use/,執行以下程式碼以後編譯

cd /data/pzqu/read_phy_disk_use/build  cmake .. -DCMAKE_BUILD_TYPE=Debug  make  gdbserver :1234 ./read_phy_disk_use

注意:cmake的指定需要-DCMAKE_BUILD_TYPE=Debug來請獲取調試

方法2——遠程gdbserver的動態連接

gdbserver的還支援動態綁定到已經啟動的進程

gdbserver :1234 --attach <PID>

打斷點開始調試

點擊小蟲子開始調試

1)我們可以看到程式碼停止到了斷點處

2)Variables 是可以自己設置的watch

3)和正常調試方式一樣啦

五、用CLion完全的在遠程工作

這是一個非常非常爽的操作,以後就可以完全的用IDE來寫程式碼了,雖然使用命令行顯得比較專業,但是使用工具可以有效的提高工作效率,何樂而不為呢?

1)進入 Preferences | Build, Execution, Deployment | Toolchains

2)設置遠程連接資訊,CLion會自動監測CMake gcc g++ gdb的資訊

1)進入Preferences | Build, Execution, Deployment | CMake

2)Toolchain 選擇我們剛剛設置的

3)上面的Automatically reload CMake project on editing 的設置勾上的時候,只要程式碼有修改就會自動編譯

1)現在已經配置了遠程Toolchains工具鏈並配置了相應的CMake配置文件

2)上圖是自動編譯和上傳到的目錄/tmp/tmp.pIdETgMIBR,然後我們只要設置為自動同步目錄就成了,如下圖

現在已經設置成了自動同步目錄,只需在運行/調試配置切換器中選擇正確的CMake配置文件,即可以完全遠程的方式構建,運行和調試應用程式和測試。

添加Application來跑我們的程式

遠程運行,本地輸出結果

遠程運行,本地自動調試

六、總結

1、配置CLion中的同步資訊:同步到哪台機器的哪個目錄。

2、使用 Deployment 讓本地和遠程可以自動同步和自動下載,手動同步和手動下載程式碼

3、配置GDB remote Debug設置

4、使用gdbserver來啟動程式進行調試

5、使用gdbserver attach依附已經啟動的程式進行調試

6、完全在本地進行遠程程式碼調試

七、其他

1、這種方式是不是非常的優雅,這樣我們只要不斷的添加工具鏈(Toolchains)就可以在本地應對數不清的遠程環境了。

2、這種方式應該適用於JetBrain全家桶。

猜你還想看這些內容

●Harbor企業級實踐丨20倍性能提升so easy!

●Harbor企業級實踐丨零侵入改造!

Kustomize上篇丨Helm 和 Kustomize:不只是含谷量的區別

Kustomize下篇丨Kustomize 中的增刪改查

· END ·

記得文末點個好看鴨~


點就完事兒了!