使用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 |
# cmake |
添加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/,执行以下代码以后编译
1 |
cd /data/pzqu/read_phy_disk_use/build |
注意:cmake的指定需要-DCMAKE_BUILD_TYPE=Debug来请获取调试


方法二 远程gdbserver的动态连接
gdbserver的还支持动态绑定到已经启动的进程
1 |
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全家桶
使用Clion优雅的完全远程自动同步和远程调试c++的更多相关文章
- rsyn远程自动同步
rsync是远程自动同步工具,同时也能实现本地文件的复制,能够实现cp ,scp的功能,但是在远程同步上rsync要scp高效,因为scp能实现增量传输,每次都得全量传输,如果传输大文件时会很消耗网络 ...
- 提交代码到远程GIT仓库,代码自动同步到远程服务器上。
现在一般都会通过github,gitlab,gitee来管理我们的代码.我们希望只要我本地push了代码,远程服务器能自动拉取git仓库的代码,进行同步. 这就需要用到各仓库为我们提供的webhook ...
- [sersync+rsync] centos6.5 远程文件同步部署记录
针对本地文件的修改,自动同步到远程文件夹,远程备份很方面.研究了下大家的主流同步方案一般是 rsync+inotify和rsync+sersync, 我这里使用sersync的方案,当然大部分都是参照 ...
- LINUX安装SVN+添加自动同步+远程下载最新代码
LINUX安装SVN+添加自动同步+远程下载最新代码---------------------1. 新建一个用户:svnroot ,以下操作非特别说明皆为root用户操作--------------- ...
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登 录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都 ...
- Pycharm专业版配置远程服务器并自动同步代码
一.使用场景 如果每次都在本机上面写代码,然后传到服务器上面,在服务器上面运行就太麻烦了.这样的方式十分繁琐,效率很低. 因此,希望可以像下面一样操作: 可以直接在本机上码代码 自动将代码同步到远程服 ...
- Windows远程数据同步工具cwRsync
1. cwRsync简介cwRsync是Rsync在Windows上的实现版本,Rsync通过使用特定算法的文件传输技术,可以在网络上传输只修改了的文件.cwRsync主要用于Windows上的远程文 ...
- Linux下svn提交文件后自动同步更新到网站目录
有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动同步代码文件到远程服务器的网站目录下,而不必手动上传了. 首先,在网站目录下checkou ...
- 如何利用svn自动同步更新到网站服务器
我们最终的目的是:当本地提交后,SVN服务器自动更新服务器端指定WEB目录内的文件 实现方法: 找到服务器端 SVN版本库所在的目录(目录名称是Repositories),这个目录是在安装Visual ...
随机推荐
- Spring扩展点之FactoryBean接口
前言 首先看一下接口定义 public interface FactoryBean<T> { /** * 返回对象实例 */ @Nullable T getObject() throws ...
- vue单页面应用中动态修改title
https://www.jianshu.com/p/b980725b62e8 https://www.npmjs.com/package/vue-wechat-title 详细信息查看:vue-wea ...
- Node.js自动本地重启服务器
node.js在本地项目中,更新 了代码 是不会自动刷新 的,要重启才能生效,每次更改代码又手动重启这样很麻烦. 可以安装 个supervisor.全局安装supervisor npm install ...
- flink PageRank详解(批量迭代的页面排名算法的基本实现)
1.PageRank算法原理 2.基本数据准备 /** * numPages缺省15个测试页面 * * EDGES表示从一个pageId指向相连的另外一个pageId */ public clas ...
- Kotlin开发springboot项目(三)
Kotlin开发springboot项目(三) 在线工具 https://www.sojson.com IDEA中Kotlin生成可执行文件1,项目使用Gradle构建2,在model的build.g ...
- Open Physics
1.开放物理计划. 开放物理计划,英文Open Physics.是AMD公司为自己的3A平台打造的物理模拟计算平台,以OpenCL为基础,由CPU+GPU联合计算完成.所谓“开放”,是指参与这个计划的 ...
- Candies POJ - 3159
题目链接:https://vjudge.net/problem/POJ-3159 思路: 能看出是差分约束的题, 我们想假设一个人是 p(1),另一个人是p(2),他们之间糖果差为w, 那么需要满足的 ...
- 洛谷P2680 运输计划(倍增LCA + 树上差分 + 二分答案)
[题目链接] [思路]: 根据题意可以明显看出,当所有任务都完成时的时间是最终的结果,也就是说本题要求,求出最小的最大值. 那这样的话就暗示了将答案二分,进行check. [check方法]: 如果说 ...
- ArcGIS 10 线转点 polyline to points
核心提示,使用Construct Points工具,在编辑里,选中一条polyline,然后编辑工具栏里的Construct Points.图等有空再补上吧.
- 201871010132——张潇潇《面向对象程序设计JAVA》第二周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...