跳到主要内容
VS Code Python 调试配置与技巧 | 极客日志
Python
VS Code Python 调试配置与技巧 VS Code 中 Python 环境的调试方法。涵盖安装准备、基础断点控制、高级 launch.json 配置(含参数、模块、框架如 Django/Flask)、远程调试及多进程调试。包含常见问题解决(解释器路径、断点失效)及性能分析、异步代码调试等进阶场景。通过合理配置和快捷键使用,提升开发效率与 Bug 定位速度。
云间运维 发布于 2026/3/28 更新于 2026/6/2 26 浏览快速开始
安装准备
# 必需扩展 - Python (Microsoft 官方扩展) - Python Debugger (推荐)
最简调试流程
设置断点 :点击行号左侧
启动调试 :按 F5
选择配置 :选择 'Python File'
基础调试
调试控制面板
按钮 快捷键 功能 ▶️ 继续 F5 执行到下一个断点 ⏸️ 暂停 Ctrl+F5 暂停执行 ⏭️ 单步跳过 F10 执行当前行 ↓ 单步进入 F11 进入函数内部 ↑ 单步跳出 Shift+F11 跳出当前函数 🔄 重启 Ctrl+Shift+F5 重新开始 ⏹️ 停止 Shift+F5 停止调试
调试视图区域
变量 (Variables) :查看和修改变量值
监视 (Watch) :添加自定义表达式监控
调用堆栈 (Call Stack) :查看函数调用链
断点 (Breakpoints) :管理所有断点
高级配置
launch.json 核心配置
{ "version" : "0.2.0" , "configurations" : [ { "name" : "Python: 当前文件" , "type" : "debugpy" , "request" : "launch"
,
"program"
:
"${file}"
,
"console"
:
"integratedTerminal"
,
"justMyCode"
:
false
,
"env"
:
{
"PYTHONPATH"
:
"${workspaceFolder}"
}
}
]
}
常用配置模板
1. 带参数调试 { "args" : [ "--input" , "data.csv" , "--verbose" ] }
2. 模块调试 { "module" : "pytest" , "args" : [ "tests/" , "-v" ] }
框架调试
Django 项目调试 { "name" : "Python: Django" , "type" : "debugpy" , "request" : "launch" , "program" : "${workspaceFolder}/manage.py" , "args" : [ "runserver" , "--noreload" ] , "django" : true , "autoStartBrowser" : false }
Flask 应用调试 { "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()
实用技巧
1. 智能断点
条件断点 :右键断点 → 设置条件
日志点 :输出信息而不暂停执行
函数断点 :在函数调用时暂停
2. 调试控制台
在调试过程中执行任意 Python 代码
修改变量值实时生效
导入模块测试函数
3. 性能分析 { "cProfile" : { "enable" : true , "output" : "${workspaceFolder}/profile.prof" } }
4. 多进程调试 { "subProcess" : true ,
"multiprocess" : true
调试技巧进阶
1. 条件断点高级用法
if len (items) > 10 :
process_items(items)
2. 监视表达式
3. 异常断点
打开断点视图
点击 '+' 添加异常断点
选择异常类型(如:所有异常、特定异常)
常见问题解决
问题 1:调试无法启动 { "python" : "/usr/bin/python3" ,
"cwd" : "${workspaceFolder}"
问题 2:断点不生效
确保文件已保存
检查 justMyCode 设置
验证文件路径是否正确
问题 3:导入错误 { "env" : { "PYTHONPATH" : "${workspaceFolder}/src:${workspaceFolder}/lib" } }
自定义调试体验
1. 颜色主题定制 { "workbench.colorCustomizations" : { "debugToolBar.background" : "#1e1e1e" , "debugIcon.startForeground" : "#00ff00" } }
2. 快捷键自定义 { "keybindings" : [ { "key" : "ctrl+shift+d" , "command" : "workbench.action.debug.start" } ] }
3. 复合调试配置 { "compounds" : [ { "name" : "全栈调试" , "configurations" : [ "后端 API" , "前端服务" , "数据库" ] , "stopAll" : true } ] }
调试最佳实践
1. 分层调试策略
开发阶段 :启用 justMyCode: false,深入第三方库
测试阶段 :使用条件断点和日志点
生产调试 :仅启用关键断点,记录调试日志
2. 性能优化建议 { "skipFiles" : [ "<node_internals>/**" , "**/site-packages/**/*.py" ] }
3. 团队协作配置 # 将 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
Jupyter Notebook 调试
安装 Jupyter 扩展
在单元格左侧设置断点
使用专用调试按钮启动
容器内调试 { "dockerOptions" : { "image" : "python:3.9" , "volumes" : [ "${workspaceFolder}:/workspace" ] , "workspaceMount" : "/workspace" } }
总结
✅ 直观的界面 :图形化调试控制
✅ 强大的功能 :条件断点、远程调试、多进程支持
✅ 灵活的配置 :JSON 配置满足各种需求
✅ 丰富的扩展 :支持主流框架和工具
从简单配置开始,逐步增加复杂度
合理使用条件断点和监视表达式
为不同场景创建专用调试配置
定期更新调试配置以适应项目变化
🎯 快速定位和修复 bug
⚡ 提高开发效率
🔧 深入理解代码执行流程
🚀 加速项目开发进程
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} " )
相关免费在线工具 curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online