Spyder单独运行代码单元格报错无法自动进入调试模式咨询
Spyder单元格运行触发错误自动进入调试模式的配置方法
- 你在
Tools -> preferences -> Run下勾选的Directly enter debugging when error appears选项,默认仅对完整脚本运行的场景生效,不会自动覆盖单独运行代码单元格(#%%分隔块)的执行链路,这是Spyder的默认设计,不属于配置失效。
正式配置方法(适用于Spyder 5.4.0及以上版本)
- 打开设置路径:
Tools -> Preferences -> Editor -> Run Cells - 找到并勾选选项:Enter post-mortem debugging when an error occurs while running cells
- 点击
Apply保存配置,重启Spyder后即可生效。
配置完成后,单独运行单元格触发错误时,就会和运行完整脚本表现一致:自动抛出错误后跳转至IPdb事后调试模式,直接停在报错代码行。
旧版本临时替代方案(5.4.0以下版本)
低版本Spyder没有提供单元格自动事后调试的内置开关,可通过两种方式实现同等效果:
- 运行单元格时不使用普通的
Run current cell按钮,改用调试单元格功能(默认快捷键Alt+Shift+Enter),以调试模式启动单元格执行,触发错误时会自动停在报错位置 - 普通模式运行单元格触发报错后,直接在IPython控制台输入命令
%debug,即可手动进入事后调试模式
效果验证
使用拆分单元格的测试代码:
def divide_by(a): c=a-2 return 3/c #%% divide_by(2)
配置生效后,运行最后一个单元格触发除零错误时,控制台将输出如下内容,直接进入调试交互状态:
**************************************** Entering post mortem debugging... **************************************** > /home/test.py(3)divide_by() 1 def divide_by(a): 2 c=a-2 ----> 3 return 3/c 4 5 IPdb[1]:
内容的提问来源于stack exchange,提问作者iris
相关产品推荐
相关产品推荐

