歡迎訪問我的個人主頁 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遠端除錯的配置 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來請獲取除錯
方法二 遠端gdbserver的動態連線 gdbserver的還支援動態繫結到已經啟動的程式gdbserver :1234 --attach <PID>
複製程式碼
打斷點開始除錯
- 點選小蟲子開始除錯
- 我們可以看到程式碼停止到了斷點處
- Variables 是可以自己設定的watch
- 和正常除錯方式一樣啦
用CLion完全的在遠端工作
這是一個非常非常爽的操作,以後就可以完全的用IDE來寫程式碼了,雖然使用命令列顯得比較專業,但是使用工具可以有效的提高工作效率,何樂而不為呢?
- 進入 Preferences | Build, Execution, Deployment | Toolchains
- 設定遠端連線資訊,CLion會自動監測CMake gcc g++ gdb的資訊
- 進入Preferences | Build, Execution, Deployment | CMake
- Toolchain 選擇我們剛剛設定的
- 上面的
Automatically reload CMake project on editing
的設定勾上的時候,只要程式碼有修改就會自動編譯
-
現在已經配置了遠端Toolchains工具鏈並配置了相應的CMake配置檔案
-
上圖是自動編譯和上傳到的目錄
/tmp/tmp.pIdETgMIBR
,然後我們只要設定為自動同步目錄就成了,如下圖 -
現在已經設定成了自動同步目錄,只需在執行/除錯配置切換器中選擇正確的CMake配置檔案,即可以完全遠端的方式構建,執行和除錯應用程式和測試。
- 新增Application來跑我們的程式
- 遠端執行,本地輸出結果
- 遠端執行,本地自動除錯
總結
- 配置CLion中的同步資訊:同步到哪臺機器的哪個目錄。
- 使用 Deployment 讓本地和遠端可以自動同步和自動下載,手動同步和手動下載程式碼
- 配置GDB remote Debug設定
- 使用gdbserver來啟動程式進行除錯
- 使用gdbserver attach依附已經啟動的程式進行除錯
- 完全在本地進行遠端程式碼除錯
其他
- 這種方式是不是非常的優雅,這樣我們只要不斷的新增工具鏈(Toolchains)就可以在本地應對數不清的遠端環境了。
- 這種方式應該適用於JetBrain全家桶