JupyterHub中清除输出后失去IPython调试器控制的解决方法
IPython调试器失去控制权后的恢复方案
问题场景
执行以下代码进入调试模式后,若进行清除输出、切换单元格模式或NBconvert操作,会丢失调试器控制权,甚至中断键也失效:
from IPython.core.debugger import Pdb ipdb = Pdb() def f(a=1): ipdb.set_trace() print(a) f()
无需重启内核即可恢复或退出调试模式,具体方法如下:
解决方法
强制终止调试会话
在新的代码单元格中执行以下代码,直接触发调试器的退出逻辑:import sys sys._current_frames().values()[-1].f_locals['ipdb'].set_quit()执行后会立即退出调试模式,内核恢复正常响应。
用IPython魔术命令清理后台会话
在新单元格中运行内置魔术命令,终止后台卡住的调试进程:%killbgscripts调用IPython Shell的调试器退出方法
如果前两种方法无效,尝试直接操作IPython实例的调试器:from IPython.core.interactiveshell import InteractiveShell shell = InteractiveShell.instance() shell.debugger.set_quit()
内容的提问来源于stack exchange,提问作者cloudscomputes
相关产品推荐
相关产品推荐

