debug代码调试项目方案
最方便的是用 VS Code 的 Python 调试器直接以 Uvicorn 模块启动;断点会停在你的 FastAPI 路由、依赖注入和业务代码中。
在项目根目录新建.vscode/launch.json:
{"version":"0.2.0","configurations":[{"name":"Debug FastAPI (Uvicorn)","type":"debugpy","request":"launch","module":"uvicorn","args":["app.main:app","--host","0.0.0.0","--port","8000","--timeout-graceful-shutdown","5"],"justMyCode":true,"jinja":true}]}然后:
- 在路由或业务函数左侧打断点。
- VS Code 按
F5,选择Debug FastAPI (Uvicorn)。 - 请求
http://127.0.0.1:8000/...,代码会在断点处暂停。 - 用
F10单步跳过、F11进入函数,并在 Variables / Debug Console 查看变量。
建议调试时不要加--reload。它会启动子进程,常导致断点附着到错误进程;要自动重载时可以另配subProcess: true,但首次排查问题时不用它最稳定。
如果服务是在 Docker、远程机器或已有终端中启动,则用远程附加方式:
python-m pip install debugpy python-m debugpy--listen 127.0.0.1:5678--wait-for-client `-m uvicorn app.main:app--host 0.0.0.0--port 8000--timeout-graceful-shutdown 5对应的 VS Code 配置:
{"name":"Attach FastAPI","type":"debugpy","request":"attach","connect":{"host":"127.0.0.1","port":5678},"justMyCode":true}附加后服务才会继续启动,因为加了--wait-for-client。如果调试端口需暴露到远程环境才使用0.0.0.0,否则保持127.0.0.1,避免开放未鉴权的调试接口。
临时快速定位也可以直接在代码中加入:
breakpoint()请求执行到这里会进入终端交互式调试;定位后应删除。