在 Jupyter 中调试和运行模式



就像在 matlab 中一样,Jupyter 中是否有可能在调试模式下运行函数,其中执行在断点处暂停,而在运行模式下函数忽略断点?在一个简单的例子中,例如

from IPython.core.debugger import set_trace
def debug(y):
    x = 10
    x = x + y 
    set_trace()
    for i in range(10):
        x = x+i
    return x
debug(10)

我们是否可以调用函数,以便忽略set_trace并正常运行函数?

想要这样做的原因是在我的函数中我放置了很多设置跟踪,当我只想在没有跟踪的情况下运行时,我需要注释所有设置跟踪。有没有更简单的方法?

我不知道

有什么方法可以直接使用 Jupyter 执行此操作,但您可以做的是像这样将猴子补丁set_trace()出来(我建议将其放在它自己的单元格中,以便您可以在想要重新打开调试时重新运行它(:

from IPython.core.debugger import set_trace
debug_mode = False #switch this to True if you want debugging back on
if not debug_mode:
  def pass_func():
    pass
  set_trace = pass_func

这样做是将名称重新绑定set_trace为一个什么都不做的函数,因此每次调用set_trace()时,它都会pass

如果要重新打开调试,只需将 debug_mode 标志切换到 True 并重新运行单元。然后,这会将名称重新绑定set_trace为从 IPython.core.debugger 导入的set_trace

相关内容

  • 没有找到相关文章

最新更新