为了调试我的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笔记本启用自动完成交互式调试?这非常有用,特别是当你有很多长名称的变量时。
答案 0 :(得分:1)
在Python 3.7中,您可以使用breakpoint()函数
此功能将您带到呼叫站点的调试器中。 具体来说,它将调用sys.breakpointhook(),并传递args和kws 直截了当的。默认情况下,sys.breakpointhook()调用 pdb.set_trace()不包含任何参数。在这种情况下,它纯粹是一个 便利功能,因此您不必显式导入pdb或 输入尽可能多的代码以进入调试器。但是,sys.breakpointhook() 可以设置为其他功能,breakpoint()会自动 这样,您就可以进入所选的调试器了。