Jupyter 中的调试和 运行 模式
Debug and run mode in 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
像在 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