vscode:连接服务器进行远程开发调试

news2024/11/26 1:35:56

        以下推荐一个使用远端服务器开发调试的方法,可以让我们像在本地编写调试程序一样简单:使用vscode + vscode-remote插件

一、安装SSH

        1.windows自带的openssh经测试不可用,建议先安装git,使用git中自带的ssh,方法如下:首先从git官网下载git安装包,然后一路默认安装完成,在桌面打开git bash,输入指令where ssh,检测系统中现有的ssh可执行文件,应该显示有两个,一个是图中的git下的ssh.exe,另一个是windows的Openssh(我的截图中是已经删除过的)。

        2.为了使用git中的ssh作为默认ssh工具,我们需要在windows的设置->应用->可选功能中,找到OpenSSH,然后选择卸载它。卸载了windows的ssh后,我们需要将git的ssh目录添加到系统的环境变量的path中,根据刚才where ssh打印的信息,要添加的目录应该为C:\Program Files\Git\usr\bin\(环境变量在我的电脑右键,属性->高级系统设置->环境变量->系统变量->path)。

        3.完成后再去git bash中执行where ssh,此时应该只有一个git中的ssh路径了。如果不行,建议重启电脑。

二、安装remote development

1.打开vscode,搜索扩展remote development,这一步会下载多个扩展,相互依赖:

2.安装完右侧会显示出一个新的开发窗口,此时按F1,在命令框中输入搜索Remote-SSH:Connect to Host->configure SSH Hosts,->C:/Users/用户名/.ssh/config。

3.配置方法,实验室的服务器配置了代理,需要一个代理工具,这里找到一个可用的windows工具ncat(有个叫netcat的工具,实测不行,别搞混了;另外,使用git携带的connect工具也可以实现,命令可以google),下载ncat后移动到C:\Windows\system32\目录下,确保windows能找到ncat指令。

代理指令为:ProxyCommand ncat --proxy <代理机IP>: <代理端口> %h %p

补充connect代理指令:ProxyCommand connect -S <代理机IP>: <代理端口> %h %p

ip按照常规方法配置,配置完ctrl+s保存。

4.配置完后列表出现一个服务器

5.按F1,输入remote-ssh setting,找到show log terminal,勾选。

点击右端的按钮开始连接,首次登录需要输入密码,且等待安装远程服务,比较慢。

三、向服务端添加密钥,实现免密访问

1.个人认为这一点比较必要,因为不止连接时会需要密码,打开目录时也会,免密方便很多。

2.方法是打开git bash,因为用的是git的ssh,所以用git bash配置, 首先在客户端生成ssh密钥:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

3.将公钥传到服务端:

ssh-copy-id -o ProxyCommand="ncat --proxy <代理机IP>: <代理端口> %h %p" root\@host_IP

4.最后一步传输配置了代理,不配置代理命令传不过去。

四、打开服务器文件夹

1.打开vscode后,配置了密钥会自动链接服务器,然后会显示这个链接界面,如果没有配置密钥会要求输入密码,注意查看terminal。

2.登录后,打开exploer选项卡,然后会有个打开文件夹的按钮,上面还有一行字,写着已经链接到了远程端。点击后选择一个服务端的文件夹打开,然后等就好了,这个速度特别慢,要从服务端下载,所以耐心等,建议不要打开较大的目录,因为速度慢,延迟高,打开自己的工作目录就好。

五、使用vscode进行远程debug

1.安装好vscode-remote,我们连接上服务器并且打开工作区后(一定要确保debug的工程在当前工作区内,且最好不要多个工程放一个工作区里面),可以直接点击vscode左侧的run and debug窗口,点击 run and debug.

2.点击run and debug后,弹出的窗口中会让我们选择调试器,我们需要在服务器环境调试(确保服务器已经安装了gdb),因此选择C++(GDB/LLDB),

3.选择完调试器后,再弹出一个窗口会让我们选择编译器,因为vscode会在每次调试前帮我们编译程序(可选,可配置编译指令),大家根据自己的工程情况选择。

4.配置完后,vscode-remote默认会自动开启一次调试,但是大概率会失败,因为默认生成的配置文件不符合我们的调试要求,我们此时忽略这次错误的调试,打开我们的工程文件夹,会看到出现了一个.vscode隐藏文件夹,里面是debug的配置文件。

5.我们先打开launch.json,可以我们需要关注的第一个是program这个项目,这是debug时自动运行的可执行文件,默认是根据vscode的宏自动读取工作区文件,但是大概率会出错,比如我习惯将执行文件名字编译成main,但是vscode默认生成的执行文件名字为rmmio,是我的工程名。为了正常调试,我们直接将工程中的可行文件的绝对路径+可执行文件名填进去,比如我的工程,就改为/home/dingbo/Desktop/Reliable_MMIO/main

紧随program后面的配置项args是设置参数的,如果我们的执行文件有参数,可以一次加在args后面的[]中,格式为"参数1",“参数2”,“参数3”

配置完gdb调试命令后,我们可以看到launch.json下还有一个preLaunchTask配置项,这个就是刚刚提到的,可以选择vscode在每次开启debug前为我们自动编译工程,编译最新版本的可执行文件。配置编译需要在在.vscode文件夹下的tasks.json中完成。我们可以看到这个文件中有两个重要的配置项,command和args,我们只需要将编译需要用到的命令依次填入其中即可,比如我用make 直接执行整个工程的编译,就可以按照如图所示更改。

六、配置完成后,我们可以直接点击run and debug中的这个绿色三角开始debug。

1.点击后,vscode上方正中间会出现一个调试工具框,包括了continue,step in等

2.我们可以在vscode图形界面中,找到行号左侧的位置,直接点击进行断点,而不需要在gdb中设置,打完的断点会显示在左侧工具栏中,

3.调试过程中,左侧工具栏第一行会自动实时显示显示当前程序运行位置的各种变量的值的变化

4.同时如果我们需要知晓其他变量的值,也可以在watch窗口中手动添加一个变量或者表达式。

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

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

相关文章

【STL容器】list

文章目录 一、list定义二、list的迭代器三、list的元素操作四&#xff0c;list的优缺点 一、list定义 list本质是一个双向带头循环链表 template<class T> struct list_node {list_node* prev;T val;list_node* next; };template<class T> class list {typedef lis…

Redis性能压测、监控工具及优化方案

Redis是一款高性能的开源缓存数据库&#xff0c;但是在实际应用中&#xff0c;我们需要对Redis进行性能压测、监控以及优化&#xff0c;以确保其稳定性和高可用性。本文将介绍Redis性能压测、监控工具及优化方案。 01 Redis性能压测 常用的Redis性能压测工具有&#xff1a; …

探秘移动端BI:发展历程与应用前景解析

什么是移动端BI 维基百科 上对于 移动端商业智能的定义是这样的 > Mobile BI is a system that presents historical and real-time information on mobile devices for effective decision-making and management support. It enables analysis on smartphones and table…

DLT645-2007智能电表通讯规约 协议读取数据实战

【本文发布于https://blog.csdn.net/Stack_/article/details/132946097&#xff0c;未经许可不得转载&#xff0c;转载须注明出处】 协议文档&#xff1a;DL-T 645-2007 多功能电能表通信协议 先用电表厂家提供的上位机进行通讯并拦截数据&#xff0c;再对照协议文档进行以下分…

springcloud3 分布式事务解决方案seata之AT模式5

一 seata的AT模式 1.1 AT模式与XA模式 XA模式一阶段不提交事务&#xff0c;锁定资源&#xff1b;AT模式一阶段直接提交&#xff0c;不锁定资源。 XA模式依赖数据库机制实现回滚&#xff1b;AT模式利用数据快照实现数据回滚。 XA模式强一致&#xff1b;AT模式最终一致 1.2 …

python虚拟环境(venv)

一、什么是python环境 首先要知道什么是python环境&#xff1f; Python环境主要包括以下内容&#xff1a; 解释器 python.exe (python interpreter&#xff0c;使用的哪个解释看环境配置) Lib目录 标准库 第三方库&#xff1a;site-pakages目录&#xff0c;默认安装第三方…

【内网穿透】公网远程访问本地硬盘文件

公网远程访问本地硬盘文件【内网穿透】 文章目录 公网远程访问本地硬盘文件【内网穿透】前言1. 下载cpolar和Everything软件3. 设定http服务器端口4. 进入cpolar的设置5. 生成公网连到本地内网穿透数据隧道 总结 前言 随着云概念的流行&#xff0c;不少企业采用云存储技术来保…

Vue.js入门模板语法及Vue.js实现购物车---详细讲解

前言 前面我们学习了Vue的基础入门&#xff0c;接下来我们学习有关Vue的模板语法&#xff0c;学习Vue语法能提高我们的前端开发效率 Vue.js 使用了基于 HTML 的模板语法&#xff0c;允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML &a…

hive、spark、presto 中的增强聚合-grouping sets、rollup、cube

目录 1、什么是增强聚合和多维分析函数&#xff1f; 2、grouping sets - 指定维度组合 3、with rollup - 上卷维度组合 4、with cube - 全维度组合 5、Grouping__ID、grouping() 的使用场景 6、使用 增强聚合 会不会对查询性能有提升呢&#xff1f; 7、对grouping sets、…

2023年中国航空装备行业研究报告

第一章 行业概况 1.1 定义和分类 航空装备行业是现代工业的重要组成部分&#xff0c;涵盖了飞机、航空发动机以及航空设备与系统三大核心领域。这些领域不仅在技术上高度复杂&#xff0c;而且在国家经济、社会发展和国家安全方面都具有至关重要的作用。 首先&#xff0c;飞机…

​ 生产者消费者问题(条件变量 互斥锁)

本篇文章对生产者消费者&#xff08;模型&#xff09;问题进行了详解。其中给出了基于阻塞队列的生产者消费者模型demo代码和对涉及到的条件变量与互斥锁的操作也进行了详细解释。解释了条件变量等待时&#xff0c;为什么还需要一把锁的问题。对生产者消费者&#xff08;模型&a…

六、展示信息添加 animation 动态效果

简介 给每个信息组件内容添加动画效果,通过 animation 来怎么增强用户浏览时的交互体验。欢迎访问个人的简历网站预览效果 本章涉及修改与新增的文件:App.vue、main.ts、first.vue 、second.vue、third.vue 、fourth.vue 、fifth.vue 一、安装 animae 插件 先安装 animate…

【ELK】日志系统部署

一、ELK日志分析系统 1、ELK的组成 ElasticSearchLogStashKibana ELK基于这三个开源日志的收集、存储、检索和可视化的解决方案&#xff1b;可帮助用户快速定位和分析应用程序的故障&#xff0c;监控应用程序性能和安全&#xff0c;以及提供丰富的数据分析和展示功能。 2、完…

Word 自动编号从10 以后编号后面的空白很大

目录 1、打开Word&#xff0c;选中需要修改的行。 2、点击鼠标右键&#xff0c;选择调整列表缩进一项&#xff0c;弹出对话框。 3、弹出对话窗口里将编号之后里面的选项&#xff0c;改成不特别标注。 4、点击确定&#xff0c;可以看到效果。 多余的缩进已经没有了。至此&…

从零开始搭建java web springboot Eclipse MyBatis jsp mysql开发环境

文章目录 1 第一步软件安装1.1 下载并安装Eclipse1.2 下载并安装Java1.3 下载并安装Apache Maven1.4 下载并安装MySQL 2 创建所需要的表和数据3 创建Maven 工程、修改jdk4 通过pom.xml获取所需要的jar包5 安装Eclipse的MyBatis插件6 创建文件夹以及jsp文件7 创建下面各种java类…

没有炫光的台灯有哪些?无眩光灯具推荐

很多家长有时候会说孩子觉得家里的台灯灯光刺眼&#xff0c;看书看久了就不舒服。这不仅要看光线亮度是否柔和&#xff0c;还要考虑台灯是不是有做遮光式设计。没有遮光式设计的台灯&#xff0c;光源外露&#xff0c;灯光会直射孩子头部&#xff0c;孩子视线较低&#xff0c;很…

掌握Katalon Studio 导入 swagger 接口文档,接口测试效率提升100%

katalon studio大家都已经不陌生了&#xff0c;是一款现在非常主流的自动化测试工具&#xff0c;包括了web、api、APP&#xff0c;甚至PC应用程序都可以使用它来完成自动化测试。 swagger是一款RESTFUL接口的文档在线自动生成软件&#xff0c;swagger是一个规范和完整的框架&a…

Python 基于人脸识别的实验室智能门禁系统的设计,附可视化界面

1 简介 本基于人脸识别的实验室智能门禁系统通过大数据和信息化的技术实现了门禁管理流程的信息化的管理操作。平台的前台页面通过简洁的平台页面设计和功能结构的分区更好的提高用户的使用体验&#xff0c;没有过多的多余的功能&#xff0c;把所有的功能操作都整合在功能操作…

物理内存分配

目录 内核物理内存分配接口 内存分配行为&#xff08;物理上&#xff09; 内存分配的行为操作 内存 三个水位线 水线计算 水位线影响内存分配行为 内存分配核心__alloc_pages 释放页 1、内核物理内存分配接口 struct page *alloc_pages(gfp_t gfp, unsigned int ord…

【go语言基础】go类型断言 type switch + case,t := x.(type)

有这么一个场景&#xff0c;当你在和用户对接的时候&#xff0c;调取第三方接口&#xff0c;但是第三方接口的时常变化的&#xff0c;比如从string类型变为int&#xff0c;这个时候你需要再去判断类型&#xff0c;获取第三方接口的参数。比较麻烦。 针对这一场景&#xff0c;g…