当前位置: 首页 > news >正文

[实验日志] VS Code 连接服务器上的 Python 解释器进行远程调试

目录

0. 前言

1. 环境

2. 准备工作

2.1 安装VS Code

2.2 安装插件

2.3 配置远程服务器

2.4 修改设置

2.5 打开远程调试窗口

3. 调试代码

3.1 输密码

3.2 打开服务器文件夹

3.3 配置Python环境

3.4 调试Python代码

补充:使用调试控制台,查看变量tensor的形状

结语


0. 前言

我们跑大型项目的时候,数据和代码都在服务器上。然而,服务器往往是Linux系统,没有图形化界面,本文将以Python语言为示例,讲解一下如何通过VS Code这款免费且好用的IDE进行远程调试代码。

常用的JetBrains家族(IntelliJ IDEA、Pycharm等)的开发工具里已经实现了远程开发功能,选择VS Code 作为开发工具的原因有以下两点:
(1)JetBrains(如Pycharm)需要专业版才有远程调试的功能,而专业版收费高,大部分人平时还是使用社区版。VS Code是微软的一款免费IDE软件,又开源又支持远程调试。
(2)JetBrains工具远程开发时通过FTP、SFTP(File Transfer Protocol,文件传输协议)实现,它们的远程开发的原理是通过文件传输协议连接到远程服务器,通过上传和下载的方式进行远程项目和本地项目的同步,这样的缺点是:不能实时同步、操作繁琐,需要维护两份代码。而VS Code是通过SSH(Secure Shell)的方式连接到远程服务器,换句话说,VS Code在远程开发过程中扮演的角色更像是一款终端模拟工具,它不需要繁琐的上传和下载步骤,实时性更好,只需要在Windows上保存一下,就会瞬间同步到远程服务器,不用建立本地和远程映射,能直接查看和修改服务器上的文件。

1. 环境

本地环境:Windows 10
远程环境:Ubuntu 16.04(64bit)、ubuntu20.04) 亲测都可以
Python版本:3.6 - 3.8 亲测都可以
VS Code:1.43.2 - 1.96.4 亲测都可以

2. 准备工作

2.1 安装VS Code

官网:Download Visual Studio Code - Mac, Linux, Windows

需要安装VS Code,建议选择Syetem Installer。

2.2 安装插件

安装Remote Development这个插件,步骤如下图所示:

  • 点击扩展按钮
  • 搜索Remote Development
  • 安装

2.3 配置远程服务器

在 SSH TARGETS 配置远程服务器,具体步骤如下:

  • 点击(窗口左侧栏)远程资源管理器
  • 点击齿轮图标
  • 打开弹出的config文件,分别配置Host、Hostname、User

这里需要注意一个,Host是一个名称,自己可以随意命名。Hostname是远程服务器的IP,User是用于登录远程服务器的账户名称。

以AutoDL为例,找到自己租的远程服务器实例,SSH登录:

复制登录指令如下:(输入登录指令可以自动生成config)

ssh -p 26982 root@connect.yza1.seetacloud.com

对应到config文件中的Host、Hostname、User:

保存后左侧SSH栏就会出现服务器名称

2.4 修改设置

打开VS Code设置,搜索Show Login Terminal,把"Always reveal the SSH login terminal"勾选上,记得一定要操作这一步,不然会一直提示报错

2.5 打开远程调试窗口

把鼠标放在上一步配置的远程连接条目上,右键,有两个条目可以选择,推荐 Connect to Host in New Window。然后就会在窗口打开我们想要的远程连接。


3. 调试代码

3.1 输密码

密码会隐藏看不见,但实际上已经输入好了,粘贴上去直接回车


3.2 打开服务器文件夹

  • 点击Explorer
  • 点击Open Folder

  • 点击确定

3.3 配置Python环境

还得再输入一次密码才能进来

3.4 调试Python代码

选Python debugger

会显示和PyCharm类似的调试配置,前三种最为常用,2对应script,3对应module

我们以2为例,所需要执行的命令如下

python tools/train.py projects/configs/flashocc/flashocc-r50-M0.py

那么对应的调试参数-配置文件内容如下(这部分将运行命令对应到vs code调试参数可以问问GPT,又快又好):

{"version": "0.2.0","configurations": [{"name": "Python 调试程序: tools/train.py","type": "python","request": "launch","program": "${workspaceFolder}/tools/train.py","args": ["${workspaceFolder}/projects/configs/flashocc/flashocc-r50-M0.py"],"env": {"PYTHONUNBUFFERED": "1",},"console": "integratedTerminal","cwd": "${workspaceFolder}"}]
}

保存后点击左侧调试栏里的开始调试,就成功开始调试啦:

别忘了设置断点哦:

还有得创建终端,conda actiavte 进环境,再调试:

补充:使用调试控制台,查看变量tensor的形状

输入xxx.shape,或者:

[tensor.shape for tensor in xxx]

就能查看对应变量内部所有tensor的形状啦,别的调试方法和PyCharm类似,可参考:

[实验日志] 将pycharm(本地项目)连接到远程服务器(Linux)上跑起来

结语

OK啦,到这里我们就成功设置了VS Code进行Python的远程调试,接下来我们就可以愉快地写代码和debug了。

本文参考以下博客,并融入了自己的思考:
https://zhuanlan.zhihu.com/p/93239107
https://blog.csdn.net/Hreticent/article/details/82968466
https://www.oschina.net/question/3637446_2282455
https://zhuanlan.zhihu.com/p/43656542
VS Code进行Python远程调试_vscode 远程 python-CSDN博客(主要参考)

相关文章:

[实验日志] VS Code 连接服务器上的 Python 解释器进行远程调试

目录 0. 前言 1. 环境 2. 准备工作 2.1 安装VS Code 2.2 安装插件 2.3 配置远程服务器 2.4 修改设置 2.5 打开远程调试窗口 3. 调试代码 3.1 输密码 3.2 打开服务器文件夹 3.3 配置Python环境 3.4 调试Python代码 补充:使用调试控制台,查看…...

(14)gdb 笔记(7):以日志记录的方式来调试多进程多线程程序,linux 命令 tail -f 实时跟踪日志

(44)以日志记录的方式来调试多进程多线程程序 : 这是老师的日志文件,可以用来模仿的模板: (45)实时追踪日志的 tail -f 命令: (46) 多种调试方法结合起来用 …...

Sentinel的安装和做限流的使用

一、安装 Release v1.8.3 alibaba/Sentinel GitHubA powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件) - Release v1.8.3 alibaba/Sentinelhttps://github.com/alibaba/Senti…...

四柱预测学

图表 后天八卦 十二地支不仅代表了时间,还代表了方位。具体来说: ‌子‌:代表正北方‌丑寅‌:合起来代表东北方‌卯‌:代表正东方‌辰巳‌:合起来代表东南方‌午‌:代表正南方‌未申‌:合起来代表西南方‌酉‌:代表正西方‌戌亥‌:合起来代表西北方‌四季-五行-六神…...

【个人开发】macbook m1 Lora微调qwen大模型

本项目参考网上各类教程整理而成,为个人学习记录。 项目github源码地址:Lora微调大模型 项目中微调模型为:qwen/Qwen1.5-4B-Chat。 去年新发布的Qwen/Qwen2.5-3B-Instruct同样也适用。 微调步骤 step0: 环境准备 conda create --name fin…...

sqli-labs靶场实录(二): Advanced Injections

sqli-labs靶场实录: Advanced Injections Less21Less22Less23探测注入点 Less24Less25联合注入使用符号替代 Less25aLess26逻辑符号绕过and/or过滤双写and/or绕过 Less26aLess27Less27aLess28Less28aLess29Less30Less31Less32(宽字节注入)Less33Less34Le…...

Linux系统 环境变量

环境变量 写在前面概念查看环境变量main函数的参数argc & argvenv bash环境变量 写在前面 对于环境变量,本篇主要介绍基本概念及三四个环境变量 —— PATH、HOME、PWD。其中 PATH 作为 “ 敲门砖 ”,我们会更详细讲解;理解环境变量的全局…...

机器学习-线性回归(最大似然估计)

机器学习任务可以分为两类: 一类是样本的特征向量 𝒙 和标签 𝑦 之间存在未知的函数关系𝑦 h(𝒙),另一类是条件概率𝑝(𝑦|𝒙)服从某个未知分布。最小二乘法是属于第一类&#xff0c…...

【信息系统项目管理师-案例真题】2017上半年案例分析答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一【问题1】8 分【问题2】4 分【问题3】8 分【问题4】5 分试题二【问题1】10 分【问题2】8 分【问题3】6 分【问题4】5 分试题三【问题1】5 分【问题2】7 分【问题3】6 分【问题4】3 分试题一 阅读下列说明…...

CSP晋级组比赛生成文件夹与文件通用代码Python

快速生成文件夹与文件的脚本 import sys import osmyfiles sys.argv[1::] for f in myfiles:os.mkdir(f)os.system(f"touch {f}/{f}.in")os.system(f"touch {f}/{f}.out")os.system(f"touch {f}/{f}.cpp")with open("template.cpp",…...

正则表达式进阶(二)——零宽断言详解:\b \B \K \z \A

在正则表达式中,零宽断言是一种非常强大的工具,能够在不消费字符的情况下对匹配位置进行约束。除了环视(lookahead 和 lookbehind)以外,还有一些常用的零宽断言,它们用于处理边界、字符串的开头和结尾等特殊…...

Android 中实现 PDF 预览三种方式

目录 1. 使用第三方库 PdfRenderer(适用于 Android 5.0 及以上) 步骤:2. 使用第三方库 MuPDF步骤:3. 使用第三方库 PdfiumAndroid步骤: 1. 使用第三方库 PdfRenderer(适用于 Android 5.0 及以上&#xff09…...

尚硅谷课程【笔记】——大数据之Zookeeper【二】

课程视频:【尚硅谷Zookeeper教程】 四、Zookeeper实战 4.1分布式安装部署 1. 集群规划 在Hadoop102、Hadoop103和Hadoop104三个节点上部署Zookeeper 2. 解压安装 1)解压Zookeeper.tar.gz到指定目录 tar -zxvf zookeeper-3.7.2.tar.gz -C /opt/mod…...

CodeGPT + IDEA + DeepSeek,在IDEA中引入DeepSeek实现AI智能开发

CodeGPT IDEA DeepSeek,在IDEA中引入DeepSeek 版本说明 建议和我使用相同版本,实测2022版IDEA无法获取到CodeGPT最新版插件。(在IDEA自带插件市场中搜不到,可以去官网搜索最新版本) ToolsVersionIntelliJ IDEA202…...

postgresql 游标(cursor)的使用

概述 PostgreSQL游标可以封装查询并对其中每一行记录进行单独处理。当我们想对大量结果集进行分批处理时可以使用游标,因为一次性处理可能造成内存溢出。 另外我们可以定义函数返回游标类型变量,这是函数返回大数据集的有效方式,函数调用者…...

计算机组成原理——指令系统(六)

在时间的长河中,我们都是追梦人,脚下的每一步都在刻画未来的模样。无论世界如何变幻,心中的那团火焰都不应熄灭。它是你突破黑暗、迎接黎明的力量源泉。每一个不曾起舞的日子,都是对生命的辜负;每一次跌倒后的站起&…...

Python设计模式 - 原型模式

定义 原型模式是一种创建型设计模式,它可以通过复制现有对象来创建新对象,而不是直接实例化新的对象。 结构 抽象原型(Prototype):声明 clone() 方法,以便派生类实现克隆自身的能力。具体原型&#xff08…...

金和OA C6 DownLoadBgImage任意文件读取漏洞

金和OA C6 DownLoadBgImage任意文件读取漏洞 漏洞描述 金和C6数据库是一款针对企业信息化管理而设计的高级数据库管理系统,主要应用于企业资源规划(ERP)、客户关系管理(CRM)以及办公自动化(OA&#xff09…...

【stm32学习】STM32F103实操primary(FlyMCU)

github插入图片实在是太难用了,暂时懒得学就先用CSDN吧hh 一、在设备管理器下,找到单片机,并检查与FlyMCU-搜索端口 显示的是否一致 二、在搜索串口右面的栏里选中该Port,波特率选中115200 三、选择文件夹中的.hex文件&#xff0…...

如何将Excel的表格存为图片?

emmm,不知道题主具体的应用场景是什么,就分享几个我一般会用到的场景下奖excel表格保存为图片的技巧吧! 先来个总结: 方法 适用场景 画质 操作难度 截图(WinShiftS) 快速保存表格,方便粘贴…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

React Native 导航系统实战(React Navigation)

导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...