跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

VS Code Python 调试配置与技巧

VS Code 中 Python 环境的调试方法。涵盖安装准备、基础断点控制、高级 launch.json 配置(含参数、模块、框架如 Django/Flask)、远程调试及多进程调试。包含常见问题解决(解释器路径、断点失效)及性能分析、异步代码调试等进阶场景。通过合理配置和快捷键使用,提升开发效率与 Bug 定位速度。

云间运维发布于 2026/3/28更新于 2026/10/25104 浏览

快速开始

安装准备

# 必需扩展 - Python (Microsoft 官方扩展) - Python Debugger (推荐)

最简调试流程

  1. 设置断点:点击行号左侧
  2. 启动调试:按 F5
  3. 选择配置:选择 '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. 条件断点高级用法

# 仅当条件满足时暂停
# 例如:列表长度大于 10 时暂停
if len(items) > 10:
    # 在此行设置条件断点
    process_items(items)

2. 监视表达式

# 在 Watch 面板添加:
# - len(data_list)
# - user.name if user else None
# - [x for x in items if x.active]
# - f"总数:{count}, 平均:{total/count:.2f}"

3. 异常断点

  1. 打开断点视图
  2. 点击 '+' 添加异常断点
  3. 选择异常类型(如:所有异常、特定异常)

常见问题解决

问题 1:调试无法启动

解决方案:

{"python":"/usr/bin/python3",// 指定解释器路径
"cwd":"${workspaceFolder}"// 设置工作目录}

问题 2:断点不生效

检查点:

  1. 确保文件已保存
  2. 检查 justMyCode 设置
  3. 验证文件路径是否正确

问题 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 提交到版本控制
# 确保团队成员配置一致
# 使用环境变量替代硬编码配置

高效调试工作流

日常调试流程

  1. 准备阶段
    • 设置关键断点
    • 添加监视表达式
    • 配置环境变量
  2. 执行阶段
    • 启动调试
    • 逐步执行代码
    • 观察变量变化
  3. 分析阶段
    • 检查调用堆栈
    • 查看异常信息
    • 修改代码并重新测试

快捷键速查表

操作快捷键
开始调试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 调试

  1. 安装 Jupyter 扩展
  2. 在单元格左侧设置断点
  3. 使用专用调试按钮启动

容器内调试

{"dockerOptions":{"image":"python:3.9","volumes":["${workspaceFolder}:/workspace"],"workspaceMount":"/workspace"}}

总结

VS Code Python 调试提供了:

  • ✅ 直观的界面:图形化调试控制
  • ✅ 强大的功能:条件断点、远程调试、多进程支持
  • ✅ 灵活的配置:JSON 配置满足各种需求
  • ✅ 丰富的扩展:支持主流框架和工具

核心建议:

  1. 从简单配置开始,逐步增加复杂度
  2. 合理使用条件断点和监视表达式
  3. 为不同场景创建专用调试配置
  4. 定期更新调试配置以适应项目变化

通过掌握这些调试技巧,你将能够:

  • 🎯 快速定位和修复 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}")

目录

  1. 快速开始
  2. 安装准备
  3. 必需扩展 - Python (Microsoft 官方扩展) - Python Debugger (推荐)
  4. 最简调试流程
  5. 基础调试
  6. 调试控制面板
  7. 调试视图区域
  8. 高级配置
  9. launch.json 核心配置
  10. 常用配置模板
  11. 1. 带参数调试
  12. 2. 模块调试
  13. 框架调试
  14. Django 项目调试
  15. Flask 应用调试
  16. 测试框架调试
  17. 远程调试
  18. 配置示例
  19. 远程代码启动
  20. 等待调试器连接
  21. 你的代码从这里开始执行
  22. 实用技巧
  23. 1. 智能断点
  24. 2. 调试控制台
  25. 3. 性能分析
  26. 4. 多进程调试
  27. 调试技巧进阶
  28. 1. 条件断点高级用法
  29. 仅当条件满足时暂停
  30. 例如:列表长度大于 10 时暂停
  31. 2. 监视表达式
  32. 在 Watch 面板添加:
  33. - len(data_list)
  34. - user.name if user else None
  35. - [x for x in items if x.active]
  36. - f"总数:{count}, 平均:{total/count:.2f}"
  37. 3. 异常断点
  38. 常见问题解决
  39. 问题 1:调试无法启动
  40. 问题 2:断点不生效
  41. 问题 3:导入错误
  42. 自定义调试体验
  43. 1. 颜色主题定制
  44. 2. 快捷键自定义
  45. 3. 复合调试配置
  46. 调试最佳实践
  47. 1. 分层调试策略
  48. 2. 性能优化建议
  49. 3. 团队协作配置
  50. 将 launch.json 提交到版本控制
  51. 确保团队成员配置一致
  52. 使用环境变量替代硬编码配置
  53. 高效调试工作流
  54. 日常调试流程
  55. 快捷键速查表
  56. 高级调试场景
  57. 异步代码调试
  58. Jupyter Notebook 调试
  59. 容器内调试
  60. 总结
  61. 测试代码

更多推荐文章

查看全部
  • 机器人轨迹规划基础与常用方法
  • 渗透测试实战:获取并破解 Net-NTLMv2 哈希
  • AI 与 SQL 双驱 ER 图生成工具:功能、原理与应用
  • AI 临床副驾驶实战:基于 Go 的电子病历助手与 HIS 对接
  • DeepSeek-R1 大模型基于 MS-Swift 框架的部署、推理与微调实践
  • Python+AI 学习路线:从零基础到实战专家
  • 数据结构:双向链表详解与实现
  • 进阶数据结构:AVL 树
  • DeepSeek-R1-Distill-Llama-8B 本地部署与 Docker Compose 服务化
  • 亚马逊户外帐篷卖家真实吐槽:以前一张主图要等7天、烧3000块,现在用 Megick 5分钟出4K大片,月销量直接翻了2.8倍
  • OpenClaw 架构解析:实现从认知到行动的 AI 智能体
  • AI 零基础入门:从概念到实践的完整指南
  • C++ 继承机制详解:从基础到多继承与组合
  • 动态规划经典题型:最小花费爬楼梯与解码方法
  • Python Google Search API 集成实战与无依赖方案
  • AIGC 在元宇宙中的应用与技术实现
  • 第十六届蓝桥杯省赛 C/C++ 大学 A 组真题解析
  • 基于 FPGA 的高性能 PCI 接口设计与实现
  • 动态规划解斐波那契问题:三步、爬楼梯与解码方法
  • Trae AI 编辑器安装与核心功能使用指南

相关免费在线工具

  • 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