vscode远程调试python
admin
2023-07-30 21:21:25
0

最近遇上一个纠结的事情,就是代码放到服务器之后才出现错误,但是线上调试往往采用直接修改线上代码,然后print结果,这样子非常不友好,所以决定寻找远程调试方案。

在网上一搜,都是使用pycharm来进行远程调试,但是这是专业版才有的功能,这可难了我这个平时使用pycharm社区版的人,好在发现vscode又开源又支持远程调试,下面已远程调试开发flask应用为例子说一下如何进行远程调试。

首先,我们要安装vscode

网址是:https://code.visualstudio.com/Download

这个IDE的好处是插件多,并且支持win,linux和mac

第二步,我们需要安装开发python的插件和一个同步代码到远程主机的插件

直接在IDE里搜索下面两个插件安装就好


Python 和 ftp-sync插件

这两个插件怎么用呢,可以参考他们的说明文档,只要配置好就行了。下面是我的配置。


ftp-sync配置

第三步,要在python代码引入ptvsd这个库(微软的python远程调试支持,很厉害的库,pip安装就好)

import ptvsd

ptvsd.settrace(None, (\’0.0.0.0\’, 8000))

第四步,很关键,要在远程主机启动python进程,但是需要代码在运行才可以调试

个人觉得,应该是这个ptvsd库打开了一个socket,然后vscode与socket通讯来获取调试结果

第五步,配置vscode调试配置


调试配置

最后一步,在vscode打断点,按F5进行调试就好。

一点点说明,还记得ftp-sync插件吗,他可以在我们保存代码的时候同步到远程主机,如果我们代码可以自动重新加载,调试能更加方便,但是主要要重新连接调试哈。

附上我的测试代码和截图

# coding:UTF-8

from flask import Flask

import ptvsd

import socket

try:

    address = (\’127.0.0.1\’, 12345)

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    s.bind(address)

except socket.error:

    ptvsd.settrace(None, (\’0.0.0.0\’, 8000))

app = Flask(__name__)

@app.route(\’/\’)

def index():

    a = 5 + 6

    return \”ok\”

if __name__ == \’__main__\’:

    app.run(host=\’0.0.0.0\’, port=3000, debug=True)


调试中

上面有一个调试技巧,因为flask框架在debug模式会产生两个进程,所以我们得在工作进程使用ptvsd,所以有下面这神奇代码。

try:

    address = (\’127.0.0.1\’, 12345)

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    s.bind(address)

except socket.error:

    ptvsd.settrace(None, (\’0.0.0.0\’, 8000))

如果有什么建议或者提问欢迎评论!

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...