vscode中jupyter notebook断点调试必须使用“debug cell”而非普通运行,否则断点完全不生效;需确保ipykernel已安装且内核带“▶”标识,断点须设在含可执行代码的单元格调用行,变量值显示滞后一行。

VSCode里Jupyter Notebook的断点调试不是“设了断点就能停”,必须走Debug Cell流程,否则断点完全不触发——这是90%新手卡住的第一步。
断点只在Debug Cell下生效,普通运行无效
点击单元格左侧的▶三角形图标、按Shift+Enter、甚至用顶部Run All,这些操作都绕过调试通道,断点会被静默忽略。VSCode对Notebook调试和普通执行做了严格路径隔离。
- 必须右键单元格 → 选择
Debug Cell,或点击单元格左侧出现的?虫子图标(不是▶) - 如果没看到
?,说明当前单元格未被识别为可执行代码:比如是纯Markdown、空行、或只有注释 - 函数定义在cell1、调用在cell2?断点要打在cell2的调用行上,然后对cell2执行
Debug Cell
ipykernel必须安装且内核带「▶」标识
VSCode的Jupyter调试依赖ipykernel提供的debugpy通信能力。光有Python解释器不够,缺这个包就无法建立调试会话。
- 在VSCode右上角点击
Select Kernel,确认选中的内核名称后带有▶标识(如Python 3.11.9 ('base': conda) ▶) - 若无
▶,说明ipykernel未安装或未注册:在对应环境里运行python -m ipykernel install --user --name base --display-name "Python (base)" - Windows下常见DLL加载失败,往往是conda环境混用了不同版本的
vs2015_runtime,建议用mamba install vs2015_runtime=14.38统一
变量值显示滞后一行,别被悬停误导
断点停在result = a + b这行时,悬停看result显示的是旧值或undefined——因为赋值尚未执行。VSCode变量面板反映的是“上一行执行完后的快照”。
- 想确认
result是否计算正确,得先按F10(单步跳过)走到下一行,再看值 - 调试中快速验证数据,比悬停更可靠的方式是:在当前单元格末尾加一行
print(df.shape)或type(x),它会在暂停时立即输出 - 变量面板(
View > Variables)只在Debug Cell启动后才实时刷新,普通运行时为空
真正容易被忽略的点是:调试状态和Notebook内核状态不共享。你用Debug Cell跑完一个单元格,再点▶运行另一个单元格,后者用的是原始内核状态,不会继承调试会话里的临时变量——所以别指望调试时改的df在后续普通运行中还存在。











