mot*_*m79 6 python debugging ipython ipdb jupyter-notebook
为了调试我的python代码,我使用了ipdb库,并使用set_trace()命令来设置断点.一旦代码到达那里,我得到一个带有ipdb>提示的交互式shell ,我可以使用制表符自动完成来探索局部变量.
但是,在IPython(Jupyter)笔记本中,ipdb.set_trace()它不起作用.正如这篇文章所建议的:
使用ipdb在一个单元格中调试python代码(jupyter或Ipython)
我使用以下替代方法进行交互式调试:
from IPython.core.debugger import Tracer
Tracer()() #this one triggers the debugger
Run Code Online (Sandbox Code Playgroud)
这为我提供了ipdb>提示,但标签自动完成功能不可用.无论如何使用ipython笔记本启用自动完成交互式调试?这非常有用,特别是当你有很多长名称的变量时.
在Python 3.7中你可以使用breakpoint()函数
\n\n\n\n此函数会将您带入调用站点的调试器。具体来说,它调用 sys.breakpointhook(),直接传递 args 和 kws。默认情况下,sys.breakpointhook() 调用 pdb.set_trace(),不需要任何参数。在这种情况下,它纯粹是一个便利函数,因此您不必显式导入 pdb 或键入尽可能多的代码来进入调试器。但是,sys.breakpointhook()\n 可以设置为其他函数,并且 Breakpoint() 将自动\n 调用该函数,从而允许您进入所选的调试器。
\n