断点不生效主因是调试未真正启动:debugpy未安装、解释器路径错位或launch.json中"type"、"program"/"module"、"console"三项配置错误,任一出问题即静默跳过。

断点不生效,90% 是因为调试根本没真正跑起来——debugpy 没加载、解释器错位、launch.json 配置错三处之一出问题,就会全程静默跳过。
确认 debugpy 已安装且解释器路径真实存在
VSCode 的 Python 扩展不自动保证 debugpy 存在,尤其在精简环境或旧虚拟环境中容易漏装。仅靠底部状态栏显示“Python 3.11.9”不够,必须确认路径指向真实可执行文件。
- 终端中运行
python -m pip install --upgrade debugpy,别依赖扩展自动装 - 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Python: Select Interpreter,从列表选带完整路径的项(如C:\myproj\.venv\Scripts\python.exe或/home/user/project/.venv/bin/python) - 检查底部状态栏:若显示“未选择解释器”或只有模糊版本号(如“Python 3.11.9 64-bit”),说明未生效
核对 launch.json 里三个硬性字段
其他字段可后续加,但以下三项写错,断点基本废掉:
-
"type": "python":大小写敏感,不能是"Type"或"Python" -
"program": "${file}"或"module": "mypackage.main":前者适合单脚本(如main.py),后者对应python -m mypackage.main;混用会导致模块导入失败,断点白设 -
"console": "integratedTerminal":设成"externalTerminal"在 Windows 上极易因权限/路径失败;先用集成终端保底
若源码在 src/ 下,还建议显式加 "cwd": "${workspaceFolder}/src",否则 import myproject.core 会报 ModuleNotFoundError。
安全 Python 代码沙箱:在隔离的沙箱中执行任意 Python 代码,预装 requests、NumPy、pandas 库。返回 stdout、stderr。
断点设对了,但程序没停?检查入口和线程配置
实心红点只是标记,不是执行指令。它要起作用,必须满足:代码真被当作入口执行、且调试器能跟踪到该路径。
- 如果你的脚本没写
if __name__ == "__main__":,或你实际用python -m flask run启动,但launch.json配的是"program": "${file}",断点大概率被过滤掉 - 调试多线程(如
threading.Thread)时,默认子线程断点不触发,必须加"subProcess": true - 想调试
import进来的模块(如src/utils.py),需把"justMyCode"改为false;但别长期开着,否则会在torch.nn等第三方库中反复加载,看起来像卡死
启动方式别搞错:F5 ≠ 右上角绿色三角
右上角 Code Runner 的绿色三角根本不走调试协议,纯终端执行,打再多断点也无效。
- 必须按
F5,或点击左侧活动栏「运行」图标(虫子形状)→ 顶部绿色 ▶️ 启动调试会话 - 启动后看调试控制台顶部日志:应含类似
debugpy version 1.6.0+;若出现ptvsd或Failed to initialize debugger,说明调试器异常 - 修改
launch.json后,务必重启调试会话(Stop → F5),VSCode 不会热重载配置
最常被忽略的是:断点是否落在当前实际执行路径上。比如你在 worker() 函数里设断点,却忘了它只在某个特定条件分支里被调用——这时光看红点没用,得结合 if 判断或日志点验证执行流。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










