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

时间:2016-11-08 15:13:48

标签: python debugging ipython jupyter-notebook ipdb

为了调试我的python代码,我使用ipdb库,并使用set_trace()命令放置一个断点。一旦代码到达那里,我得到一个带有ipdb>提示符的交互式shell,我可以使用制表符自动完成来探索局部变量。

然而,在IPython(Jupyter)笔记本中,ipdb.set_trace()不起作用。正如这篇文章所建议的: using ipdb to debug python code in one cell (jupyter or Ipython)

我使用以下替代方法进行交互式调试:

from IPython.core.debugger import Tracer
Tracer()() #this one triggers the debugger

这为我提供了ipdb>提示,但标签自动填充功能不可用。无论如何使用ipython笔记本启用自动完成交互式调试?这非常有用,特别是当你有很多长名称的变量时。

1 个答案:

答案 0 :(得分:1)

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

  

此功能将您带到呼叫站点的调试器中。   具体来说,它将调用sys.breakpointhook(),并传递args和kws   直截了当的。默认情况下,sys.breakpointhook()调用   pdb.set_trace()不包含任何参数。在这种情况下,它纯粹是一个   便利功能,因此您不必显式导入pdb或   输入尽可能多的代码以进入调试器。但是,sys.breakpointhook()   可以设置为其他功能,breakpoint()会自动   这样,您就可以进入所选的调试器了。