为什么Vimspector在NVIM的Python Flask项目中无法触发断点?
Vimspector 调试 Flask 断点不生效解决方案
问题根因
你当前的配置存在两个核心问题:
- 配置层级错误:
env字段直接放在configurations根节点下属于无效配置,应该放到对应调试项的configuration块内 - Flask 开发模式默认开启的重载器会生成子进程处理业务请求,默认调试配置未开启子进程追踪,导致断点仅在父进程生效,无法命中实际处理请求的子进程代码
修复步骤
1. 调整 Vimspector 配置
修改后的完整配置参考如下:
{ "configurations": { "python: Launch at macbook": { "adapter": "debugpy", "configuration": { "name": "python: Launch", "type": "python", "request": "launch", "cwd": "${workspaceRoot}", "python": "${workspaceRoot}/venv-tmp/bin/python", "stopOnEntry": false, "console": "integratedTerminal", "program": "${workspaceRoot}/app.py", "env": { "ENV": "development" }, "subProcess": true, "justMyCode": false } } } }
新增的两个配置项作用:
subProcess: true:开启子进程调试追踪,适配 Flask 重载器的多进程模式justMyCode: false:关闭调试器的默认过滤规则,避免你的业务代码被判定为非用户代码跳过
2. 调整 Flask 启动代码
在你的app.py启动入口关闭重载器:
if __name__ == "__main__": # 关闭自动重载,避免多进程干扰调试 app.run(debug=True, use_reloader=False)
可选:使用 flask run 命令启动的配置
如果你习惯用官方启动命令,把program字段替换为如下配置即可:
"module": "flask", "args": ["run", "--no-reload", "--host=127.0.0.1", "--port=5000"]
配置修改完成后重启 Vimspector 会话,在路由函数内打断点,触发对应请求即可正常命中。
内容的提问来源于stack exchange,提问作者user2156115
相关产品推荐
相关产品推荐

