就像在 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
。