VS Code(Cursor)远程开发调试教程(超详细)

前言 📢

声明:本文配置及开发方法同样适合Cursor !!

在开始之前,你需要准备以下东西:

  1. 本地电脑

    • 安装好 VS Code(Windows、Mac 或 Linux 都可以)。

    • 官网下载,按提示安装即可。

  2. 远程电脑(如服务器):

    • 你需要知道它的 IP 地址、用户名和密码(或者 SSH 密钥)。

    • 远程电脑必须安装 SSH 服务和 C/C++ 编译器(比如 GCC 或 Clang)。

  3. 网络

    • 本地电脑和远程电脑要能互相访问,比如在同一局域网,或者远程电脑有公网 IP。

准备好了吗?我们开始吧!🚀


第一步:安装 VS Code 和必要插件 🌐

  1. 安装 VS Code

    • 如果还没安装,去官网下载并安装。安装完成后,打开 VS Code,你会看到一个简洁的代码编辑器界面。

  2. 安装 Remote - SSH 插件

    • 在 VS Code 左侧点击“扩展”图标(像四个小方块拼成的形状)。

    • 在搜索框输入 Remote - SSH,找到微软官方的插件,点击“安装”。

    • 安装完成后,窗口左下角会多一个小图标(像个显示器)。

      图片

      图片

  3. 安装 C/C++ 扩展

    • 在“扩展”搜索框输入 C++,找到微软的 C/C++ 扩展,点击“安装”。

    • 这个扩展提供 C/C++ 的语法高亮、智能提示和调试支持。

      安装 C/C++ 插件


第二步:连接到远程电脑 💻

  1. 打开 SSH 面板

    • 点击左下角的“显示器”小图标,(点击+号)选择“Connect to Host”。

    • 如果是第一次使用,会提示你配置 SSH,点击“Configure SSH”。

      图片

  2. 编辑 SSH 配置文件

    • VS Code 会打开一个配置文件(通常位于 ~/.ssh/config)。

    • 输入以下内容(根据你的远程电脑信息修改):
      Host my-serverHostName 172.168.3.127  # 远程电脑的 IP 地址User your-username      # 远程电脑的用户名Port 22                 # 默认 SSH 端口,通常不用改
    • 保存文件后,返回 SSH 面板,选择“my-server”进行连接。

  3. 输入密码或使用 SSH 密钥

    • 连接时会提示输入密码,正确输入后即可连上。

    • 如果有 SSH 密钥(更安全),提前将公钥添加到远程电脑的 ~/.ssh/authorized_keys 文件中,可免输密码。

    • 连接成功后,VS Code 会在远程电脑安装一些必要组件,稍等片刻即可完成。

  4. 确认连接成功

    • 左下角显示“SSH: my-server”,说明你已成功连接到远程电脑!


第三步:在远程电脑上编写 C/C++ 代码 📝

  1. 打开远程文件夹

    • 点击菜单“文件” > “打开文件夹”,选择远程电脑上的某个目录(例如 /home/your-username/projects)。

    • 现在你操作的文件都在远程电脑上,修改也会直接保存到远程。

  2. 写一个简单的 C++ 程序

    • 新建文件 test.cpp,输入以下代码:
      #include <iostream>
      int main() {std::cout << "Hello from remote!" << std::endl;return 0;
      }
    • 保存文件。


第四步:编译 C/C++ 程序 🔧

  1. 打开远程终端

    • 点击菜单“终端” > “新终端”(或者ctrl+J),会打开一个远程电脑的终端。

  2. 编译代码

    • 在终端输入命令进入代码目录,例如:
      cd /home/your-username/projects
    • 编译程序:
      g++ test.cpp -o test
      (如果用 Clang,则输入 clang++ test.cpp -o test)。
    • 如果提示找不到编译器,需要在远程电脑安装,例如:
      sudo apt install g++
  3. 运行程序

    • 编译成功后,输入:
      ./test
    • 输出 Hello from remote!,说明程序运行正常。


第五步:调试 C/C++ 程序 ☕️

  1. 配置调试环境

    • 点击左侧“调试”图标(像播放键加小虫子)。

    • 点击“创建 launch.json 文件”,选择“C++: (GDB/LLDB)”。

      图片

    • VS Code 会生成一个 launch.json 文件。

      图片

  2. 修改 launch.json

    • 将 "program" 修改为你的可执行文件路径,例如:
      "program": "/home/your-username/projects/test"
    • 确保 "miDebuggerPath" 是远程电脑上 GDB 的路径,通常是 "/usr/bin/gdb"

      {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 启动", //配置名称,显示在配置下拉菜单中"type": "cppdbg",    //配置类型"request": "launch", //请求配置类型,通常是启动调试(launch)或者是附加(attach)"program": "${workspaceFolder}/projects/test", //可执行程序文件的完整路径,${workspaceFolder}表示远程连接的初始路径"args": [], //传递给程序的命令行参数"stopAtEntry": false, //可选参数,如果为true,调试程序应该在入口(main)处停止"cwd": "${workspaceFolder}/projects", //目标的工作目录"environment": [], //表示要预设的环境变量"externalConsole": false, //如果为true,则为调试对象启动控制台"MIMode": "gdb", //调试器模式/类型"setupCommands": [ //为了安装基础调试程序而执行的一个或多个GDB/LLDB命令{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}]}]
      }
  3. 设置断点

    • 在 test.cpp 中 std::cout 那行左侧点击,会出现一个红点,表示断点已设置。

      图片

  4. 开始调试

    • 按 F5(或点击绿色播放键)启动调试,程序会在断点处暂停。

    • 使用顶部工具栏的按钮(暂停、继续、停止)控制程序,还可以查看变量的值。

    • 或者按 F10(单步跳过)、F11(单步调试)、shift + F11(单步跳出)、ctrl + shift + F5(重启调试)、shift + F5(停止调试)。

      图片


常见问题及解决方法 ❓

  1. 无法连接远程电脑?

    • 检查 IP 地址、用户名和密码是否正确。

    • 在本地命令行测试 ssh your-username@172.168.3.127,确认是否能连上。

  2. 调试时提示“找不到 GDB”?

    • 在远程终端输入 gdb --version 检查是否安装。

    • 未安装则运行 sudo apt install gdb 安装。

  3. 编译报错?

    • 检查代码是否有语法错误。

    • 确保远程电脑已安装 C/C++ 编译器。

  4. 如何关闭远程终端?

    • 方法一:按 Ctrl+Shift+P,输入“关闭远程连接”。

    • 方法二:点击左下角的“SSH: my-server”,选择“关闭远程连接”。

  5. VS Code布局
    聪明的你,可能已经发现文中的图片有两种布局(系统默认在左侧,而我喜欢放在右侧)。具体操作如下:

    • VS Code 编辑器中按快捷键 Cmd/ctrl+shift+P 打开弹框。

    • 弹框输入 setting 找到 vscode setting 打开。

    • 设置面板搜索 workbench.activityBar.orientation 修改活动栏排列方向。

    • 设置面板搜索 workbench.sideBar.location 修改主边栏和活动栏展示在工作台左侧或右侧。


总结 🔚

现在你已经学会用 VS Code 进行 C/C++ 的远程开发和调试了。简单回顾流程:

安装插件 → 连接远程电脑 → 编写代码 → 编译运行 → 设置断点调试。

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

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

相关文章

【C++】类与对象:深入理解默认成员函数

类与对象&#xff1a;深入理解默认成员函数 引言1、默认成员函数概述2、构造函数与析构函数2.1 默认构造函数2.2 析构函数 3、拷贝控制成员3.1 拷贝构造函数3.2 赋值运算符重载 4、移动语义&#xff08;C11&#xff09;4.1 移动构造函数4.2 移动赋值运算符 5、三五法则与最佳实…

QT实现计算器

1&#xff1a;在注册登录的练习里面&#xff0c; 追加一个QListWidget 项目列表 要求&#xff1a;点击注册之后&#xff0c;将账号显示到 listWidget上面去 以及&#xff0c;在listWidget中双击某个账号的时候&#xff0c;将该账号删除 Widget.h #ifndef WIDGET_H #define…

算法进阶——二分

二分法&#xff1a; 一种高效查找方法&#xff0c;将问题搜索范围一分为二&#xff0c;迭代地缩小范围&#xff0c;直到找到目标。 二分法适用于有序的数据集合。 常见的二分类型有&#xff1a; 整数二分 浮点二分 二分答案 二分解题步骤&#xff1a; 1.研究并发现数据…

Kotlin函数式编程与Lambda表达式

Kotlin函数式编程与Lambda表达式 一、函数式编程基础 1.1 什么是函数式编程 函数式编程是一种编程范式&#xff0c;它将计算过程视为数学函数的求值&#xff0c;强调使用不可变数据和纯函数。在Kotlin中&#xff0c;函数式编程的特性让我们能够写出更简洁、更易维护的代码。…

Java 并行流(parallelStream)详解

目录 1. 什么是 parallelStream&#xff1f;2. parallelStream 的优势3. parallelStream 的使用3.1 基本使用3.2 计算总和示例3.3 结合groupingByConcurrent实现线程安全的分组操作 4. parallelStream 的注意事项4.1 适用场景4.2 并行流的局限性 5. 控制并行流线程数6. 总结 1.…

Ubuntu 20.04下配置VSCode以支持OpenCV库开发

Ubuntu 20.04下配置VSCode以支持OpenCV库开发 1. 安装OpenCV库安装OpenCV&#xff08;推荐使用APT安装&#xff09;或者从源码安装OpenCV&#xff08;可选&#xff09; 2. 安装VSCode的C扩展3. 配置c_cpp_properties.json4. 编写代码并测试5. 配置tasks.json&#xff08;编译Op…

io学习----->标准io

思维导图&#xff1a; 一.io的作用 io是实现对文件的操作&#xff0c;把运行结果存到文件中&#xff0c;读取文件的数据&#xff0c;方便后期查询。 二.io的概念 io是指系统 和外部设备或用户之间的数据交互 I:input 表示数据从外部设备输入到内存中&#xff1b; O:output…

使用消息队列怎样防止消息重复?

大家好&#xff0c;我是君哥。 使用消息队列时&#xff0c;我们经常会遇到一个可能对业务产生影响的问题&#xff0c;消息重复。在订单、扣款、对账等对幂等有要求的场景&#xff0c;消息重复的问题必须解决。 那怎样应对重复消息呢&#xff1f;今天来聊一聊这个话题。 1.三…

005 公网访问 docker rocketmq

文章目录 创建自定义网络创建NameServer容器创建Broker容器正式开始启动 Nameserver 容器启动 Broker 容器并关联 Nameserverdocker exec -it rmqbroker vi /etc/rocketmq/broker.conf检查 namesrv 解析检查 Broker 注册状态Nameserver 日志Broker 日志检查容器日志手动指定 Br…

解决Docker Desktop启动后Docker Engine stopped问题

一、问题描述 当我们更新了Docker Desktop后,在重新打开就显示【Docker Engine stopped(Docker引擎已经停止)】,无法正常使用Docker,如下图所示: 二、问题分析 1、检查电脑主板的CPU是否开启虚拟化; 2、需检查Docker所需的功能是否开启; 3、检查WSL是否匹配; Docker的…

MongoDB—(一主、一从、一仲裁)副本集搭建

MongoDB集群介绍&#xff1a; MongoDB 副本集是由多个MongoDB实例组成的集群&#xff0c;其中包含一个主节点&#xff08;Primary&#xff09;和多个从节点&#xff08;Secondary&#xff09;&#xff0c;用于提供数据冗余和高可用性。以下是搭建 MongoDB 副本集的详细步骤&am…

C++STL---<limits>

C <limits> 头文件&#xff1a; <limits> 头文件是 C 标准库中用于获取各种数据类型的数值范围、精度等信息的工具。它通过模板类 std::numeric_limits 提供了对基本数据类型&#xff08;如 int、float、double 等&#xff09;的详细属性查询功能。通过 std::nume…

蓝桥杯自我复习打卡

总复习&#xff0c;打卡1. 一。排序 1。选段排序 太可恶了&#xff0c;直接全排输出&#xff0c;一个测试点都没过。 AC 首先&#xff0c;这个【l,r】区间一定要包含p,或者q&#xff0c;pq一个都不包含的&#xff0c;[l,r]区间无论怎么变&#xff0c;都对ans没有影响。 其次&…

Flutter_学习记录_实现列表上拉加载更多的功能

可以用ScrollController组件来实现这样列表上拉加载更多的功能: 1. 定义变量 在StatefulWidget 的组件内&#xff0c;添加三个属性&#xff1a; // 滚动视图的控制器final ScrollController _scrollController ScrollController();// 是否已显示了上拉加载中bool _isShowM…

【Linux】【网络】不同子网下的客户端和服务器通信其它方式

【Linux】【网络】不同子网下的客户端和服务器通信其它方式 那么&#xff0c;在 NAT 环境下&#xff0c;应该如何让内网设备做为服务器&#xff0c;使内网设备被外部连接&#xff1f; 1 多拨 部分运营商&#xff0c;支持在多个设备上&#xff0c;通过 PPPoE 登录同一个宽带账…

《Python百练成仙》31-40章(不定时更新)

第卅一章 函数结丹def开紫府 罗酆山的鬼门关吞吐着猩红的变量阴风&#xff0c;每个风眼都涌动着作用域混乱的灵力乱流。叶军手握薛香遗留的丹田玉简&#xff0c;玉简表面浮现出残缺的函数符文&#xff1a; def 凝聚金丹(灵气):道基 灵气 * 0.618print(金丹品质) # 作用域外变…

六十天前端强化训练之第一天到第七天——综合案例:响应式个人博客项目

欢迎来到编程星辰海的博客讲解 目录 前言回顾 HTML5与CSS3基础 一、知识讲解 1. 项目架构设计&#xff08;语义化HTML&#xff09; 2. 响应式布局系统&#xff08;Flex Grid&#xff09; 3. 样式优先级与组件化设计 4. 完整响应式工作流 二、核心代码示例 完整HTML结…

测试的BUG分析

在了解BUG之前,我们要先了解软件测试的生命周期,因为大多数BUG都是在软件测试的过程中被发现的 软件测试的生命周期 在了解 软件测试的生命周期 之前,我们要先了解 软件的生命周期 ,虽然他们之间只差了两个字,但是差距还是很大的 首先是 软件生命周期 ,这个是站在 软件 的角…

【洛谷贪心算法题】P1094纪念品分组

该题运用贪心算法&#xff0c;核心思想是在每次分组时&#xff0c;尽可能让价格较小和较大的纪念品组合在一起&#xff0c;以达到最少分组的目的。 【算法思路】 输入处理&#xff1a;首先读取纪念品的数量n和价格上限w&#xff0c;然后依次读取每件纪念品的价格&#xff0c;…

[STM32]从零开始的STM32 BSRR、BRR、ODR寄存器讲解

一、前言 学习STM32一阵子以后&#xff0c;相信大家对STM32 GPIO的控制也有一定的了解了。之前在STM32 LED的教程中也教了大家如何使用寄存器以及库函数控制STM32的引脚从而点亮一个LED&#xff0c;之前的寄存器只是作为一个引入&#xff0c;并没有深层次的讲解&#xff0c;在教…