歡迎訪問個人我的主頁 qupzhi.com ,轉載請註明出處。linux
摘要:在linux上用vim寫C++的時候,一般用gdb進行調試,不能爲所欲爲的看代碼和跳轉代碼以及加watch(也有多是由於我尚未get正確的使用方法)。爲此我發現Clion能夠作到自動同步本場代碼或本身下載遠程代碼同步到本地,以及調試在遠程機器上運行的代碼,爲此記錄下來。c++
簡介
CLion 是一款專爲開發 C 及 C++ 所設計的跨平臺 IDE。 它是以 IntelliJ 爲基礎設計的,包含了許多智能功能來提升開發人員的生產力,從而提高工做效率 。shell
環境準備
- 操做系統: 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個文件
- 查看遠程目錄,確實成功了
好了,如今只要在本地有任何的改動都會自動同步到遠程了。vim
遠程調試
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)
- 遠程調試鏈接成功後,像本地調試同樣,能夠設置斷點,單步跟蹤等
- 調試須要本地和遠程的代碼一致
兩個方法設置遠程配置
方法1、 遠程gdbserver的啓動 遠程調試依賴gdbserver的來支持,經過gdbserver的啓動的程序,會先等待遠程調試的鏈接,鏈接成功後再啓動進程。bash
假設代碼的根目錄:/data/pzqu/read_phy_disk_use/
,執行如下代碼之後編譯app
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來請獲取調試tcp
方法二 遠程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
,而後咱們只要設置爲自動同步目錄就成了,以下圖 ui
-
如今已經設置成了自動同步目錄,只需在運行/調試配置切換器中選擇正確的CMake配置文件,便可以徹底遠程的方式構建,運行和調試應用程序和測試。
- 添加Application來跑咱們的程序
- 遠程運行,本地輸出結果
- 遠程運行,本地自動調試
總結
- 配置CLion中的同步信息:同步到哪臺機器的哪一個目錄。
- 使用 Deployment 讓本地和遠程能夠自動同步和自動下載,手動同步和手動下載代碼
- 配置GDB remote Debug設置
- 使用gdbserver來啓動程序進行調試
- 使用gdbserver attach依附已經啓動的程序進行調試
- 徹底在本地進行遠程代碼調試
其餘
- 這種方式是否是很是的優雅,這樣咱們只要不斷的添加工具鏈(Toolchains)就能夠在本地應對數不清的遠程環境了。
- 這種方式應該適用於JetBrain全家桶