快速开始
安装准备
# 必需扩展 - Python (Microsoft 官方扩展) - Python Debugger (推荐)
最简调试流程
- 设置断点:点击行号左侧
- 启动调试:按
F5 - 选择配置:选择 'Python File'
VS Code 中 Python 环境的调试方法。涵盖安装准备、基础断点控制、高级 launch.json 配置(含参数、模块、框架如 Django/Flask)、远程调试及多进程调试。包含常见问题解决(解释器路径、断点失效)及性能分析、异步代码调试等进阶场景。通过合理配置和快捷键使用,提升开发效率与 Bug 定位速度。
# 必需扩展 - Python (Microsoft 官方扩展) - Python Debugger (推荐)
F5| 按钮 | 快捷键 | 功能 |
|---|
| ▶️ 继续 | F5 | 执行到下一个断点 |
| ⏸️ 暂停 | Ctrl+F5 | 暂停执行 |
| ⏭️ 单步跳过 | F10 | 执行当前行 |
| ↓ 单步进入 | F11 | 进入函数内部 |
| ↑ 单步跳出 | Shift+F11 | 跳出当前函数 |
| 🔄 重启 | Ctrl+Shift+F5 | 重新开始 |
| ⏹️ 停止 | Shift+F5 | 停止调试 |
{"version":"0.2.0","configurations":[{"name":"Python: 当前文件","type":"debugpy","request":"launch","program":"${file}","console":"integratedTerminal","justMyCode":false,"env":{"PYTHONPATH":"${workspaceFolder}"}}]}
{"args":["--input","data.csv","--verbose"]}
{"module":"pytest","args":["tests/","-v"]}
{"name":"Python: Django","type":"debugpy","request":"launch","program":"${workspaceFolder}/manage.py","args":["runserver","--noreload"],"django":true,"autoStartBrowser":false}
{"name":"Python: Flask","type":"debugpy","request":"launch","module":"flask","env":{"FLASK_APP":"app.py","FLASK_DEBUG":"1"},"args":["run","--port","5000"]}
{"name":"Python: Pytest","type":"debugpy","request":"launch","module":"pytest","args":["${file}","-v","-s","--tb=short"]}
{"name":"Python: 远程附加","type":"debugpy","request":"attach","connect":{"host":"localhost","port":5678},"pathMappings":[{"localRoot":"${workspaceFolder}","remoteRoot":"/remote/path"}]}
import debugpy
debugpy.listen(5678)
debugpy.wait_for_client()
# 等待调试器连接
# 你的代码从这里开始执行
{"cProfile":{"enable":true,"output":"${workspaceFolder}/profile.prof"}}
{"subProcess":true,// 调试子进程
"multiprocess":true// 支持多进程}
# 仅当条件满足时暂停
# 例如:列表长度大于 10 时暂停
if len(items) > 10:
# 在此行设置条件断点
process_items(items)
# 在 Watch 面板添加:
# - len(data_list)
# - user.name if user else None
# - [x for x in items if x.active]
# - f"总数:{count}, 平均:{total/count:.2f}"
解决方案:
{"python":"/usr/bin/python3",// 指定解释器路径
"cwd":"${workspaceFolder}"// 设置工作目录}
检查点:
justMyCode 设置{"env":{"PYTHONPATH":"${workspaceFolder}/src:${workspaceFolder}/lib"}}
{"workbench.colorCustomizations":{"debugToolBar.background":"#1e1e1e","debugIcon.startForeground":"#00ff00"}}
{"keybindings":[{"key":"ctrl+shift+d","command":"workbench.action.debug.start"}]}
{"compounds":[{"name":"全栈调试","configurations":["后端 API","前端服务","数据库"],"stopAll":true}]}
justMyCode: false,深入第三方库{"skipFiles":["<node_internals>/**","**/site-packages/**/*.py"]}
# 将 launch.json 提交到版本控制
# 确保团队成员配置一致
# 使用环境变量替代硬编码配置
| 操作 | 快捷键 |
|---|---|
| 开始调试 | F5 |
| 切换断点 | F9 |
| 单步进入 | F11 |
| 单步跳过 | F10 |
| 重启调试 | Ctrl+Shift+F5 |
| 停止调试 | Shift+F5 |
| 打开调试控制台 | Ctrl+Shift+Y |
| 查看所有断点 | Ctrl+Shift+F8 |
{"name":"Python: Async","type":"debugpy","request":"launch","program":"${file}","asyncio":true,// 支持异步
"gevent":true// 支持协程}
{"dockerOptions":{"image":"python:3.9","volumes":["${workspaceFolder}:/workspace"],"workspaceMount":"/workspace"}}
VS Code Python 调试提供了:
核心建议:
通过掌握这些调试技巧,你将能够:
立即尝试:
# 测试代码
def debug_demo():
data = [1, 2, 3, 4, 5]
total = 0
for item in data:
total += item
# 在此设置断点
print(f"当前累计:{total}")
return total
if __name__ == "__main__":
result = debug_demo()
print(f"最终结果:{result}")

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online