vscode调试notebook单元格必须使用「debug cell」而非普通运行,断点仅在此模式下生效;需确保内核正确安装ipykernel并带「▶」标识,且目标单元格含可执行python代码。

VSCode 调试 Notebook 单元格不是“点运行就能断”,必须用「调试单元格」触发,否则断点完全不生效。
断点只在「调试单元格」下才起作用
普通点击 ▶ 运行单元格或按 Shift+Enter,断点会被忽略——这是最常被卡住的地方。VSCode 的 Notebook 调试是独立会话,和普通执行走的是两套内核通信路径。
- 必须右键单元格 → 选择「Debug Cell」,或点击单元格左侧的「虫子图标」(不是三角形)
- 若没看到虫子图标,说明当前单元格未被识别为可调试代码(比如是纯 Markdown 或空行)
- 断点要设在目标函数定义处,但触发调试的得是调用它的那个单元格(例如函数在 cell1,调用在 cell2,则对 cell2 执行「Debug Cell」)
变量值显示滞后一行
调试暂停时,变量面板和悬停提示显示的是「上一行执行完后的状态」,不是当前高亮行的计算结果。比如断点打在 result = a + b 这行,暂停时 result 还是未定义或旧值;按 F10(逐过程)走到下一行后,result 才更新。
- 想确认当前行效果?先按
F10,再看变量 - 鼠标悬停看变量时,滚动滚轮才能展开长对象(如 DataFrame 头部、嵌套字典)
- 右侧「Variables」面板只在调试会话中激活,非调试状态下为空
内核选错会导致调试直接失败
即使能正常运行单元格,如果内核没装 ipykernel 或未注册,「Debug Cell」会静默失败——没有报错,也没有暂停,就像没打断点一样。
- 检查右上角内核名称旁是否有「▶」图标;没有则说明内核未就绪
- 终端执行
python -m ipykernel install --user --name=myenv --display-name="Python (myenv)"注册 - 务必在目标环境中装
ipykernel,只装jupyter不够 - 切换内核后,需重启 Jupyter Server(命令面板输入
Jupyter: Restart Kernel)
真正容易被忽略的,是「调试单元格」和「运行单元格」共享同一个内核但走不同协议——这导致环境一致却行为割裂。别依赖直觉,每次调试前都确认虫子图标是否可点、内核是否带「▶」、目标单元格是否含可执行 Python 代码。











