Windows上使用VSCode开发linux C++程序

在Windows上使用VSCode开发C++程序,同时需要在Linux机器上的Docker容器中编译和运行程序,可以通过一些工具和插件来简化开发和调试流程。以

1. Remote - SSH 插件(VSCode)

VSCode的 Remote - SSH 插件可以让你直接在VSCode中通过SSH连接到远程Linux机器,并进行开发和调试。

配置步骤:
  1. 安装Remote - SSH 插件
    打开VSCode,进入扩展商店,搜索并安装 Remote - SSH 插件。

  2. 配置SSH连接
    在VSCode中,点击左下角的绿色远程连接按钮,选择 Remote-SSH: Connect to Host,然后按照提示配置SSH连接到你的Linux机器。

  3. 进入远程容器
    一旦你连接到Linux机器,你可以在VSCode中直接访问远程的文件系统,并进行编译、运行等操作。如果你已经有了一个Docker容器,你可以使用 Remote - Containers 插件(也可以通过Remote-SSH配置)来直接进入容器内进行开发。

使用场景:
  • 当你需要在本地Windows机器上进行C++开发,但最终编译、运行和调试是在远程Linux机器上时,使用此插件可以让你在VSCode中无缝开发,避免在不同环境之间切换。
  • 如果你的代码需要依赖特定的Linux环境或者Docker容器,Remote-SSH非常适合。

2. Remote - Containers 插件(VSCode)

Remote - Containers 插件允许你将VSCode连接到Docker容器中的开发环境。这对于需要在Linux环境中进行编译和调试的C++程序非常有用。

配置步骤:
  1. 安装Remote - Containers 插件
    同样,你需要在VSCode中安装 Remote - Containers 插件。

  2. 配置Docker环境
    在VSCode中,点击左下角的绿色按钮,选择 Remote-Containers: Attach to Running Container,然后选择已经在Linux机器上运行的Docker容器。你也可以选择使用 Remote-Containers: Open Folder in Container 来启动并进入一个新的Docker容器开发环境。

  3. 进入容器并开发
    进入容器后,你可以像在本地开发一样,在VSCode中进行代码编辑、编译和调试。VSCode会自动将容器中的编译器和调试器与编辑器环境连接。

使用场景:
  • 适用于需要在容器中进行开发和调试的场景,特别是当你的程序依赖于容器中的特定库和环境时。
  • 如果你已经有一个在Docker中运行的开发环境,或者需要确保开发环境一致性,使用这个插件能够让你快速进入容器进行调试。

3. C/C++ 插件(VSCode)

除了 Remote - SSHRemote - Containers 插件,VSCode本身的 C/C++ 插件 也非常强大,适用于C++开发和调试。

配置步骤:
  1. 安装C/C++ 插件
    在VSCode中安装微软提供的 C/C++插件,它为VSCode提供了语法高亮、代码补全、调试等功能。

  2. 配置调试环境
    你需要在VSCode的 launch.json 中配置调试器(如 gdb)以在远程Linux环境中调试C++程序。

    示例的 launch.json 配置文件:

    {"version": "0.2.0","configurations": [{"name": "(gdb) Remote Linux Debug","type": "cppdbg","request": "launch","program": "/path/to/your/executable","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","miDebuggerServerAddress": "remote-linux-host:1234",  // 远程调试地址"miDebuggerPath": "/usr/bin/gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build", // 你编译的任务"sourceFileMap": {"/path/on/remote": "${workspaceFolder}" // 映射源文件路径}}]
    }
    

    这里需要注意配置 miDebuggerServerAddress 指定远程调试器的地址和端口。如果你已经在Linux机器上运行了GDBserver,可以使用该工具进行远程调试。

使用场景:
  • 适合需要在Linux环境中调试C++程序的场景。即使不通过容器,也可以通过GDB远程调试。
  • 适用于使用传统调试方式的开发者,需要通过GDB进行远程调试。

4. Docker配置:远程调试设置

如果你决定使用Docker容器中的开发环境,可以通过一些额外的配置来支持远程调试:

  1. 在容器内安装GDBserver
    GDBserver 是一个可以在容器中运行的调试工具,它允许你通过GDB进行远程调试。

    在容器内安装GDBserver:

    apt-get install gdbserver
    
  2. 启动GDBserver
    你可以在容器内运行GDBserver,并指定一个调试端口(例如1234):

    gdbserver :1234 ./your_program
    
  3. 连接到GDBserver
    在VSCode的 launch.json 配置文件中,设置 miDebuggerServerAddress 为你容器的IP和调试端口,例如:

    "miDebuggerServerAddress": "192.168.x.x:1234",
    
  4. 设置Docker容器共享源代码
    为了方便调试,你需要确保本地代码和容器中的代码路径是同步的。可以使用Docker的 -v 参数将代码目录挂载到容器中。

5. Visual Studio Code Remote Development Setup

如果你需要一个完整的开发和调试环境,VSCode的 Remote Development 插件集(包括 Remote-SSH 和 Remote-Containers)提供了完整的支持:

  • Remote-SSH:允许通过SSH连接到远程Linux机器进行开发。
  • Remote-Containers:使你可以在Docker容器中进行开发。
  • Remote-WSL:如果你在Windows上使用WSL(Windows Subsystem for Linux),也可以直接在WSL环境中进行开发。

总结

  1. Remote - SSH 插件适用于需要通过SSH连接到Linux远程机器进行开发的场景。
  2. Remote - Containers 插件适用于在Docker容器中开发和调试的场景。
  3. C/C++插件 可以帮助你在VSCode中进行C++开发和调试,同时可以配置远程调试。

使用这些工具和插件,你可以在Windows上通过VSCode远程连接到Linux机器或Docker容器,实现无缝的开发和调试体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/505912.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Js的回调函数

一、什么是回调函数(Callback)? 回调函数(Callback Function)是指一个函数被作为参数传递给另一个函数,并在特定事件发生或操作完成时执行。 可以通俗地理解为一种“委托”机制。 在JavaScript中&#xff0…

OSPF - 1类LSA(Router-LSA)

前篇博客有对常用LSA的总结 1类LSA是OSPF计算最原始的材料,他会泛洪发给所有的路由器 LSA是包含在LSU中的,一条LSU能够携带多条LSA options位所有LSA都会有,用于标记起源于什么类型的区域,具体查看文章【邻居建立】 flags位是一…

python学opencv|读取图像(三十一)缩放图像的三种方法

【1】引言 前序学习进程中,我们至少掌握了两种方法,可以实现对图像实现缩放。 第一种方法是调用cv2.resize()函数实现,相关学习链接为: python学opencv|读取图像(三)放大和缩小图像_python opencv 读取图…

实训云上搭建集群

文章目录 1. 登录实训云1.1 实训云网址1.2 登录实训云 2. 创建网络2.1 网络概述2.2 创建步骤 3. 创建路由器3.1 路由器名称3.1 创建路由器3.3 查看网络拓扑 4. 连接子网5. 创建虚拟网卡5.1 创建原因5.2 查看端口5.3 创建虚拟网卡 6. 管理安全组规则6.1 为什么要管理安全组规则6…

c++入门之 命名空间与输入输出

1、命名空间 1.1使用命名空间的原因 先看一个例子&#xff1a; #include <iostream>int round 0;int main() {printf("%d", round);return 0; }请问&#xff0c;这个程序能跑起来吗&#xff1f; 答案是否定的 原因是&#xff0c;当我们想创建一个全局变量 …

继承(7)

大家好&#xff0c;今天我们继续来学习一下继承的知识&#xff0c;这方面需要大家勤动脑才能理解&#xff0c;那么我们来看。 1.9 protected关键字 在类和对象章节中&#xff0c;为了实现封装特性,java中引入访向限定符,主要限定:类或者类中成员能否在类外和其他包中被访问. …

Unity中 Xlua使用整理(二)

1.Xlua的配置应用 xLua所有的配置都支持三种方式&#xff1a;打标签&#xff1b;静态列表&#xff1b;动态列表。配置要求&#xff1a; 列表方式均必须是static的字段/属性 列表方式均必须放到一个static类 建议不用标签方式 建议列表方式配置放Editor目录&#xff08;如果是H…

Flink三种集群部署模型

这里写自定义目录标题 Flink 集群剖析Flink 应用程序执行Flink Session 集群&#xff08;Session Mode&#xff09;Flink Job 集群&#xff08;以前称为per-job&#xff09;Flink Application 集群&#xff08;Application Mode&#xff09; 参考 Flink 集群剖析 Flink 运行时…

Windows10环境下安装RabbitMq折腾记

最近有个老项目需要迁移到windows10环境&#xff0c;用的是比较老的rabbitmq安装包&#xff0c;如下所示。经过一番折腾&#xff0c;死活服务起不来&#xff0c;最终果断放弃老版本启用新版本。现在把折腾过程记录下&#xff1a; 一、安装erlang 安装完成后的目录结构&#xff…

【深度学习】通俗理解偏差(Bias)与方差(Variance)

在统计学习中&#xff0c;我们通常使用方差与偏差来衡量一个模型 1. 方差与偏差的概念 偏差(Bais)&#xff1a; 预测值和真实值之间的误差 方差(Variance)&#xff1a; 预测值之间的离散程度 低偏差低方差、高偏差低方差&#xff1a; 图中每个点表示同一个模型每次采样出不同…

(五)ROS通信编程——参数服务器

前言 参数服务器在ROS中主要用于实现不同节点之间的数据共享&#xff08;P2P&#xff09;。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点也可以往其中存储数据&#xff0c;关…

使用Keil创建FreeRTOS工程

之前记录了使用Keil创建Keil自带的RTX5的RTOS和使用CubeMX创建FreeRTOS。这次来记录下使用Keil创建FreeRTOS。使用CMSIS-RTOS2将FreeRTOS封装好 1.Pack增加CMSIS-FreeRTOS 2.CMSIS配置为FreeRTOS 点击Resolve后再点击OK即可 3.屏蔽相关文件 4.屏蔽3个中断 将void PendSV_Han…

LLM - Llama 3 的 Pre/Post Training 阶段 Loss 以及 logits 和 logps 概念

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145056912 Llama 3 是 Meta 公司发布的开源大型语言模型&#xff0c;包括具有 80 亿和 700 亿参数的预训练和指令微调的语言模型&#xff0c;支持…

Unity + Firebase + GoogleSignIn 导入问题

我目前使用 Unity版本&#xff1a;2021.3.33f1 JDK版本为&#xff1a;1.8 Gradle 版本为&#xff1a;6.1.1 Firebase 版本: 9.6.0 Google Sign In 版本为&#xff1a; 1.0.1 问题1 &#xff1a;手机点击登录报错 apk转化成zip&#xff0c;解压&#xff0c;看到/lib/armeabi-v…

安卓投屏电脑最详细教程

安卓手机投屏到电脑的操作可以通过多种方式实现&#xff0c;最常见的方法有使用 Scrcpy、911投屏 或者 Windows 10/11 自带的投屏功能。下面是几个常用方法的详细教程&#xff1a; 方法 1&#xff1a;使用 Scrcpy &#xff08;推荐&#xff0c;免费的开源工具&#xff09; Sc…

VSCode配置php开发环境

我偷偷地告诉你&#xff0c; 有一个地方叫做稻城&#xff0c;我要和我最心爱的人一起去到那里... 2025.1.10 声明 仅作为个人学习使用&#xff0c;仅供参考 不知道如何配置php本地环境的&#xff0c;请翻阅 笔者的上一篇文章 正文 VSCode安装 官网&#xff1a;Download Vis…

StarRocks Awards 2024 年度贡献人物

在过去一年&#xff0c;StarRocks 在 Lakehouse 与 AI 等关键领域取得了显著进步&#xff0c;其卓越的产品功能极大地简化和提升了数据分析的效率&#xff0c;使得"One Data&#xff0c;All Analytics" 的愿景变得更加触手可及。 虽然实现这一目标的道路充满挑战且漫…

python学习笔记—17—数据容器之字符串

1. 字符串 (1) 字符串能通过下标索引来获取其中的元素 (2) 旧字符串无法修改特定下标的元素 (3) index——查找字符串中任意元素在整个字符串中的起始位置(单个字符或字符串都可以) tmp_str "supercarrydoinb" tmp_position1 tmp_str.index("s") tmp_p…

跟着逻辑先生学习FPGA-第八课 基于 I2C 协议的 EEPROM 驱动控制

硬件平台&#xff1a;征战Pro开发板 软件平台&#xff1a;Vivado2018.3 仿真软件&#xff1a;Modelsim10.6d 文本编译器&#xff1a;Notepad 征战Pro开发板资料 链接:https://pan.baidu.com/s/1AIcnaGBpNLgFT8GG1yC-cA?pwdx3u8 提取码:x3u8 1知识背景 I2C 通讯协议&#xf…

Mac上鸿蒙配置HDC报错:zsh: command not found: hdc -v

这个问题困扰了好久&#xff0c;按照官方文档去配置的&#xff0c;就是会一直报错&#xff0c;没有配置成功&#xff0c;主要原因是官网ide的路径可能和你本地的ide的路径不一致&#xff0c;因为官网的ide版本可能是最新的 一.先查找你本地的toolchains目录在哪里&#xff0c;…