Python中vscode调试flask时断点有时生效有时失效,是vscode的bug吗?有其他人遇到过吗?
-
我发现断点在第一次开浏览器的时候会成功,之后再也无法进入断点,求有经验的人指点
-
配置应该没错,因为没有报错,有一点我很奇怪,我使用了 flask-script 插件,所以参数是 runserver 启动,但是下面配置的 args 是 run 才可以运行起来
{
"name": "Python: Flask (0.11.x or later)",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"module": "flask",
"cwd": "${workspaceFolder}",
"env": {
"FLASK_APP": "${workspaceFolder}/manage.py"
},
"args": [
"run"
],
"envFile": "${workspaceFolder}/.env",
"debugOptions": [
"RedirectOutput"
]
}
------------------------------------------分割线-------------------------------------------
- pycharm debug 的时候,打了断点,使用浏览器访问该断点的时候不会中断,让我很尴尬,求解
Python中vscode调试flask时断点有时生效有时失效,是vscode的bug吗?有其他人遇到过吗?
我遇到过类似问题,这通常不是VSCode的bug,而是Flask开发服务器的热重载机制导致的。当代码被修改后,Flask会重新加载应用,这时旧的调试器连接会断开,新启动的进程可能没有正确附加调试器。
解决方案:
- 关闭Flask热重载:在
launch.json中配置环境变量
{
"name": "Python: Flask",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_DEBUG": "0"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
]
}
- 使用
debugpy手动附加(更稳定):
# app.py
import debugpy
debugpy.listen(5678)
debugpy.wait_for_client() # 这行会阻塞直到VSCode连接
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello"
然后在VSCode中使用"Attach"配置连接5678端口。
- 确保使用正确的启动方式:不要用
python app.py直接运行,而是通过VSCode的调试配置启动。
总结:关掉热重载或用debugpy手动附加就能解决。
原来如此,那我打断点,然后访问该断点,为什么不会停呢?需要有什么注意的吗?
你解决了吗?我也是打打断点不停
不知道你目前用的 vsode 还是 pycharm,我目前是使用了 pycharm,调试挺方便的,我之后思考,为什么 vsocde 的 debug 不停止,我猜的,也是用 pycharm 后给我的启发,vscode 第一次启动可以 debug 调试成功,为什么第二次就不行,感觉是因为并没有把第一次的调试停止,又开了第二个调试进程,所以在下面的操作台看看,能不能把之前的关闭
2018-09-17 粗略的借地回复下:
帖子本身很老了,flask 的一些配置已经和之前的不一样了,后面的人看到注意下日期。
首先 flask 的配置中 --reload 和 VS 的调试(不是–no-debug) 是冲突的,必须去掉 reload 才能响应断点。
然后 如果修改配置了,注意要把 VS 的终端关掉,然后再试。
关键的地方就这两点


