使⽤Clion优雅的完全远程⾃动同步和远程调试c++
摘要:在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的依赖依赖
1 2 3 4 5 6 7 8 9# 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): xx:1234
设置远程路径和本地路径的映射(Path mappings)
远程调试连接成功后,像本地调试⼀样,可以设置断点,单步跟踪等调试需要本地和远程的代码⼀致
两个⽅法设置远程配置
⽅法⼀、远程gdbserver的启动
远程调试依赖gdbserver的来⽀持,通过gdbserver的启动的程序,会先等待远程调试的连接,连接成功后再启动进程。假设代码的根⽬录:/data/pzqu/read_phy_disk_use/,执⾏以下代码以后编译
1 2 3 4cd /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的还⽀持动态绑定到已经启动的进程
1gdbserver :1234 --attach <PID>
打断点开始调试
点击⼩⾍⼦开始调试
我们可以看到代码停⽌到了断点处
Variables 是可以⾃⼰设置的watch
和正常调试⽅式⼀样啦
⽤CLion完全的在远程⼯作
这是⼀个⾮常⾮常爽的操作,以后就可以完全的⽤IDE来写代码了,虽然使⽤命令⾏显得⽐较专业,但是使⽤⼯具可以有效的提⾼⼯作效率,何乐⽽不为呢?
进⼊ Preferences | Build, Execution, Deployment | Toolchains如何用vim命令写程序
设置远程连接信息,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全家桶

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。