[英]Interactive debugging in IPython (Jupyter) notebook
为了调试我的python代码,我使用ipdb
库,并使用set_trace()
命令放置一个断点。 一旦代码到达那里,我得到一个带有ipdb>
提示符的交互式shell,我可以使用tab autocompletion来探索局部变量。
但是,在IPython(Jupyter)笔记本中, ipdb.set_trace()
不起作用。 正如这篇文章所建议的: 使用ipdb在一个单元格中调试python代码(jupyter或Ipython)
我使用以下替代方法进行交互式调试:
from IPython.core.debugger import Tracer
Tracer()() #this one triggers the debugger
这给了我ipdb>
提示符,但是标签自动完成功能不可用。 无论如何使用ipython笔记本启用自动完成交互式调试? 这非常有用,特别是当你有很多长名称的变量时。
在Python 3.7中,您可以使用breakpoint()函数
此函数会将您置于调用站点的调试器中。 具体来说,它调用sys.breakpointhook(),直接传递args和kws。 默认情况下,sys.breakpointhook()调用pdb.set_trace()期望没有参数。 在这种情况下,它纯粹是一个便利功能,因此您不必显式导入pdb或输入尽可能多的代码来进入调试器。 但是,sys.breakpointhook()可以设置为其他一些函数,breakpoint()会自动调用它,允许你进入选择的调试器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.