就像在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被忽略并且函数正常运行吗?
我想要这个的原因是在我的函数中我放置了很多设置跟踪,当我只想在没有跟踪的情况下运行时,我需要注释所有设置的跟踪。有更简单的方法吗?
答案 0 :(得分:3)
我不知道你可以直接用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
重新绑定为从set_trace
导入的IPython.core.debugger
。