IPython(Jupyter)笔记本中的交互式调试

9
为了调试我的Python代码,我使用ipdb库,并使用set_trace()命令放置一个断点。一旦代码到达那里,我会得到一个带有ipdb>提示符的交互式shell,在那里我可以使用Tab自动完成探索本地变量。
然而,在IPython(Jupyter)笔记本中,ipdb.set_trace()不起作用。正如这篇文章所建议的: 使用ipdb在一个单元格中调试Python代码(Jupyter或Ipython) 我使用以下替代方法进行交互式调试:
from IPython.core.debugger import Tracer
Tracer()() #this one triggers the debugger

这让我得到了ipdb>提示,但是标签自动完成不可用。有没有办法在使用IPython Notebook进行交互式调试时启用自动完成?这非常有用,特别是当您有很多具有较长名称的变量时。


2
不好意思,那些输入提示的工作方式不允许使用制表符自动完成。 - Thomas K
1个回答

1

在Python 3.7中,您可以使用breakpoint()函数。

此函数会在调用处进入调试器。 具体来说,它调用sys.breakpointhook(),直接传递args和kws。默认情况下,sys.breakpointhook()调用pdb.set_trace(),不需要参数。在这种情况下,它是一个方便的函数,因此您不必显式导入pdb或键入太多代码以进入调试器。但是,sys.breakpointhook()可以设置为其他某个函数,并且breakpoint()将自动调用该函数,从而允许您进入所选调试器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接