使用Clion優雅的完全遠端自動同步和遠端除錯c++

小熊同學發表於2019-04-21

歡迎訪問我的個人主頁 qupzhi.com ,轉載請註明出處。

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

簡介

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

環境準備

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

自動同步

設定遠端連結

  • 開啟CLion的設定,進入到 Preferences | Build, Execution, Deployment | Deployment
  • 點加號,新增一個遠端配置
  • 設定為SFTP協議,設定遠端ip、port、pass然後點選Test Connection,確認是否連線成功

設定本地與遠端的連線對映

  • 切換到Mappings
  • 設定本地的程式碼根目錄Local path
  • 設定遠端的程式碼根目錄 Deployment path

上傳一個檔案

  • 上傳一個檔案
  • Upload是上傳,Download是下載,本地與遠端所對映的目錄我們在上面設定過了

上傳效果

  • 上傳成功

檢視更新的檔案

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

設定自己同步

  • 在Tool - Deployment - Automatic Upload(always) 設定為自動同步
  • 自動同步的話可以在每次在本地改動程式碼的時候自己同步了
  • Sync with Deployed to 就是自動下載遠端程式碼到本地

上傳整個專案

  • 手動上傳整個專案
    上傳成功
  • 上傳成功,上傳了100個檔案
    檢視上傳效果
  • 檢視遠端目錄,確實成功了

好了,現在只要在本地有任何的改動都會自動同步到遠端了。

遠端除錯

CentOS的依賴依賴

# cmake
yum install cmake -y

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

#gdbserver
yum install gdb-gdbserver -y
複製程式碼

新增GDB Remote Debug

本地克利翁配置

新增遠端除錯設定
新增GDB Remote Debug
設定gdb remote配置

  • 新增一個GDB遠端除錯的配置 GDB Remote Debug
  • 設定遠端訪問引數(target remote args): tcp:xx.xx.xx.xx:1234
  • 設定遠端路徑和本地路徑的對映(Path mappings)
  • 遠端除錯連線成功後,像本地除錯一樣,可以設定斷點,單步跟蹤等
  • 除錯需要本地和遠端的程式碼一致

兩個方法設定遠端配置

方法一、 遠端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來請獲取除錯

使用Clion優雅的完全遠端自動同步和遠端除錯c++

使用Clion優雅的完全遠端自動同步和遠端除錯c++
方法二 遠端gdbserver的動態連線 gdbserver的還支援動態繫結到已經啟動的程式

gdbserver :1234 --attach <PID>
複製程式碼

attash成功後

打斷點開始除錯

開始除錯

  • 點選小蟲子開始除錯

打斷點

  • 我們可以看到程式碼停止到了斷點處
  • Variables 是可以自己設定的watch
  • 和正常除錯方式一樣啦

用CLion完全的在遠端工作

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

設定Toolchains工具鏈

  • 進入 Preferences | Build, Execution, Deployment | Toolchains
  • 設定遠端連線資訊,CLion會自動監測CMake gcc g++ gdb的資訊

設定cmake

  • 進入Preferences | Build, Execution, Deployment | CMake
  • Toolchain 選擇我們剛剛設定的
  • 上面的Automatically reload CMake project on editing 的設定勾上的時候,只要程式碼有修改就會自動編譯

編譯成功

  • 現在已經配置了遠端Toolchains工具鏈並配置了相應的CMake配置檔案

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

    設定為自動同步目錄

  • 現在已經設定成了自動同步目錄,只需在執行/除錯配置切換器中選擇正確的CMake配置檔案,即可以完全遠端的方式構建,執行和除錯應用程式和測試。

新增Application

  • 新增Application來跑我們的程式
    遠端執行
  • 遠端執行,本地輸出結果
    遠端除錯
  • 遠端執行,本地自動除錯

總結

  • 配置CLion中的同步資訊:同步到哪臺機器的哪個目錄。
  • 使用 Deployment 讓本地和遠端可以自動同步和自動下載,手動同步和手動下載程式碼
  • 配置GDB remote Debug設定
  • 使用gdbserver來啟動程式進行除錯
  • 使用gdbserver attach依附已經啟動的程式進行除錯
  • 完全在本地進行遠端程式碼除錯

其他

  • 這種方式是不是非常的優雅,這樣我們只要不斷的新增工具鏈(Toolchains)就可以在本地應對數不清的遠端環境了。
  • 這種方式應該適用於JetBrain全家桶

相關文章