最近遇上一个纠结的事情,就是代码放到服务器之后才出现错误,但是线上调试往往采用直接修改线上代码,然后print结果,这样子非常不友好,所以决定寻找远程调试方案。
在网上一搜,都是使用pycharm来进行远程调试,但是这是专业版才有的功能,这可难了我这个平时使用pycharm社区版的人,好在发现vscode又开源又支持远程调试,下面已远程调试开发flask应用为例子说一下如何进行远程调试。
网址是:https://code.visualstudio.com/Download
这个IDE的好处是插件多,并且支持win,linux和mac
直接在IDE里搜索下面两个插件安装就好
这两个插件怎么用呢,可以参考他们的说明文档,只要配置好就行了。下面是我的配置。
import ptvsd
ptvsd.settrace(None, ('0.0.0.0', 8000))
个人觉得,应该是这个ptvsd库打开了一个socket,然后vscode与socket通讯来获取调试结果
一点点说明,还记得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))
如果有什么建议或者提问欢迎评论!
2024 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123