专栏首页腾讯云TStack专栏如何优雅的远程自动同步和远程调试c++?

如何优雅的远程自动同步和远程调试c++?

/ 机智的小熊 /

一个不愿意透露姓名的工程师,热爱读书,写文章,热爱交流,期待认识更多的大佬。

摘 要

在linux上用vim写C++的时候,通常用gdb进行调试,不能随心所欲的看代码和跳转代码以及加watch(也有可能是因为我还没有get正确的使用方法)。为此我发现Clion可以做到自动同步本场代码或自己下载远程代码同步到本地,以及调试在远程机器上运行的代码,分享给大家。

一、简 介

CLion是一款专为开发 C 及 C++ 所设计的跨平台 IDE。它是以 IntelliJ 为基础设计的,包含了许多智能功能来提高开发人员的生产力,从而提升工作效率 。

二、环境准备

  • 操作系统:macOS / Windows
  • IDE: CLion
  • 源码路径:Node Master

三、自动同步

1)打开CLion的设置,进入到 Preferences | Build, Execution, Deployment | Deployment

2)点加号,添加一个远程配置

3)设置为SFTP协议,设置远程ip、port、pass然后点击Test Connection,确认是否连接成功

1)切换到Mappings

2)设置本地的代码根目录Local path

3)设置远程的代码根目录 Deployment path

1)上传一个文件

2)Upload是上传,Download是下载,本地与远程所映射的目录我们在上面设置过了

上传成功

runlvm.sh文件更新成功,现在的时间是3月18 21:42

1)在Tool - Deployment - Automatic Upload(always) 设置为自动同步

2)自动同步的话可以在每次在本地改动代码的时候自己同步了

3)Sync with Deployed to 就是自动下载远程代码到本地

手动上传整个项目

上传成功,上传了100个文件

查看远程目录,确实成功了;好了,现在只要在本地有任何的改动都会自动同步到远程了。

四、远程调试

1、CentOS的依赖依赖

# cmake
yum install cmake -y

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

#gdbserver
yum install gdb-gdbserver -y

2、添加GDB Remote Debug

本地克利翁配置

1)添加一个GDB远程调试的配置 GDB Remote Debug

2)设置远程访问参数(target remote args):tcp:xx.xx.xx.xx:1234

3)设置远程路径和本地路径的映射(Path mappings)

4)远程调试连接成功后,像本地调试一样,可以设置断点,单步跟踪等

5)调试需要本地和远程的代码一致

3、两个方法设置远程配置

方法1—— 远程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来请获取调试

方法2——远程gdbserver的动态连接

gdbserver的还支持动态绑定到已经启动的进程

gdbserver :1234 --attach <PID>

打断点开始调试

点击小虫子开始调试

1)我们可以看到代码停止到了断点处

2)Variables 是可以自己设置的watch

3)和正常调试方式一样啦

五、用CLion完全的在远程工作

这是一个非常非常爽的操作,以后就可以完全的用IDE来写代码了,虽然使用命令行显得比较专业,但是使用工具可以有效的提高工作效率,何乐而不为呢?

1)进入 Preferences | Build, Execution, Deployment | Toolchains

2)设置远程连接信息,CLion会自动监测CMake gcc g++ gdb的信息

1)进入Preferences | Build, Execution, Deployment | CMake

2)Toolchain 选择我们刚刚设置的

3)上面的Automatically reload CMake project on editing 的设置勾上的时候,只要代码有修改就会自动编译

1)现在已经配置了远程Toolchains工具链并配置了相应的CMake配置文件

2)上图是自动编译和上传到的目录/tmp/tmp.pIdETgMIBR,然后我们只要设置为自动同步目录就成了,如下图

现在已经设置成了自动同步目录,只需在运行/调试配置切换器中选择正确的CMake配置文件,即可以完全远程的方式构建,运行和调试应用程序和测试。

添加Application来跑我们的程序

远程运行,本地输出结果

远程运行,本地自动调试

六、总结

1、配置CLion中的同步信息:同步到哪台机器的哪个目录。

2、使用 Deployment 让本地和远程可以自动同步和自动下载,手动同步和手动下载代码

3、配置GDB remote Debug设置

4、使用gdbserver来启动程序进行调试

5、使用gdbserver attach依附已经启动的程序进行调试

6、完全在本地进行远程代码调试

七、其他

1、这种方式是不是非常的优雅,这样我们只要不断的添加工具链(Toolchains)就可以在本地应对数不清的远程环境了。

2、这种方式应该适用于JetBrain全家桶。

猜你还想看这些内容

●Harbor企业级实践丨20倍性能提升so easy!

●Harbor企业级实践丨零侵入改造!

Kustomize上篇丨Helm 和 Kustomize:不只是含谷量的区别

Kustomize下篇丨Kustomize 中的增删改查

· END ·

记得文末点个好看鸭~


点就完事儿了!

本文分享自微信公众号 - 腾讯云TStack(gh_035269c8aa5f),作者:小熊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kustomize上篇丨Helm 和 Kustomize:不只是含谷量的区别

    ? 本文作者 / 龙少 开源软件、自动化爱好者。资深马拉松酱油选手。 PART1——Helm Helm 是 Kubernetes 中的第一个对应用程序进行管理...

    腾讯云TStack
  • 再下一城!腾讯云、海南省公安厅共建大数据应用实战平台

    近日,海南省公安厅大数据应用实战平台招标结果出炉,腾讯云凭借在云计算、大数据、用户行为画像、综合社交图谱等方面拥有的行业领先优势,以及完备的政务云解决方案中标。...

    腾讯云TStack
  • OpenStack基金会高管到访腾讯总部

    2月2日,OpenStack基金会一行首次到访腾讯,与腾讯云TStack团队、Tosa-腾讯开源联盟展开了有关OpenStack产品使用推广情况,以及开源行业发...

    腾讯云TStack
  • 使用Clion优雅的完全远程自动同步和远程调试c++

    摘要:在linux上用vim写C++的时候,通常用gdb进行调试,不能随心所欲的看代码和跳转代码以及加watch(也有可能是因为我还没有get正确的使用方法)。...

    机智的程序员小熊
  • 为你揭开 node.js 调试面纱

    最近在写公司内部的一个 node 应用的时候,发现自己在 node 调试这块还是比较薄弱的,特意恶补了一下,在这里也做一下分享。

    coder_koala
  • 谷歌一下区块链媒体,有可行性吗?此次谷歌搜索重返中国,是否靠谱?

    谷歌一下区块链媒体,有可行性吗?没有。据链讯头条报道,最近,谷歌搜索返华的传闻再起,更有人民日报在海外社交媒体上对此事发文,表示:“欢迎谷歌返回中国大陆,但必须...

    望名天
  • 调试DuerOS的智能语音技能

    进入了智能语音时代,我们都已经熟悉了如何在DuerOS 上开发一个智能语音技能应用,典型的流程如下:

    半吊子全栈工匠
  • Golang | 简介channel常见用法,完成goroutin通信

    今天我们来看看golang当中另一个很重要的概念——信道。我们之前介绍goroutine的时候曾经提过一个问题,当我们启动了多个goroutine之后,我们怎么...

    TechFlow-承志
  • Goroutine + Channel 实践

    背景 在最近开发的项目中,后端需要编写许多提供HTTP接口的API,另外技术选型相对宽松,因此选择Golang + Beego框架进行开发。之所以选择Golan...

    李海彬
  • Hive 表的存储格式

    北漂的我

扫码关注云+社区

领取腾讯云代金券