VSCode远程调试Python项目配置指南
本文详细介绍在VSCode中配置Python远程调试的完整流程。涵盖从本地环境搭建、launch.json配置到服务器端ptvsd库安装的具体步骤。特别针对Flask在Debug模式下无法捕捉断点的问题,提供了基于子进程调用的解决方案,帮助开发者高效进行远程代码调试。
本文详细阐述了在VSCode中进行Python远程调试的具体操作方法,旨在为读者提供实用的参考。
实验环境
远程服务器配置为京东云,规格为1核2G,操作系统为CentOS 7.3 64位。
本地环境配置
- 首先安装VSCode,本实验使用的版本为1.10.2。
- 在VSCode中配置Python插件,实验所使用的Python插件版本为0.7.0。
- 接下来配置VSCode的Python远程调试环境。
需要在.vscode文件夹下新建一个launch.json文件,并填入相应的配置代码。
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach (Remote Debug)",
"type": "python",
"request": "attach",
"localRoot": "${workspaceRoot}",
"remoteRoot": "/tmp/demo",
"port": 12345,
"secret": "my_secret",
"host": "10.12.34.23"
}
]
}
注意:需将/var/web替换为实际的远程项目路径,port参数指定调试时打开的端口,host参数填写远程服务器的IP地址。
服务器环境配置
首先需要在服务器上安装一个名为ptvsd的Python库,务必注意版本必须使用3.0.0,若使用更高版本可能会导致问题。
随后在项目的入口文件中添加以下代码(请将12345替换为实际使用的调试端口):
import ptvsd
ptvsd.settrace(None, ('0.0.0.0', 12345))
完整的Python示例代码如下:
# coding:UTF-8
import ptvsd
ptvsd.settrace(None, ('0.0.0.0', 12345))
from time import sleep
from random import random
for _ in xrange(0, 50):
sleep(5)
i = random()
print(i)
开始调试
- 首先在服务器上启动工程。
- 接着在VSCode中设置好断点。
- 最后在VSCode中运行调试模式即可。

解决Flask在Debug模式下远程调试无法捕捉数据的问题
具体代码如下:
# coding:UTF-8
from flask import Flask
import ptvsd
import socket
try:
address = ('127.0.0.1', 11111)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(address)
except socket.error:
ptvsd.settrace(None, ('0.0.0.0', 12345))
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模式下会fork一个子进程来处理HTTP请求,因此需要在子进程中调用ptvsd.settrace(None, ('0.0.0.0', 12345))。
以上就是本文的全部内容,希望对各位的学习有所帮助,也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













