繁体   English   中英

在IPython(Jupyter)笔记本中进行交互式调试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM