Python调试器:交互式调试与硬编码断点

时间:2017-10-11 01:49:02

标签: python debugging pdb

交互式调试(python -m pdb foo.py)和硬编码断点(import pdb; pdb.set_trace())之间有什么区别。

关于dubuggers的大多数教程只关注特定命令的使用,但理解它会很有趣:

  • 选择调试模式的最佳做法是什么?

  • 他们在计算时间上有不同的性能吗?

1 个答案:

答案 0 :(得分:2)

python -m pdb foo.py会在程序的最开始弹出调试器。这可能对您想要整体分析的非常小的程序很有用。

在较大且更复杂的程序中,您需要调查的情况是在高级函数调用堆栈顶部进行大量计算后出现的,这种用法非常不切实际。

在这种情况下,通常更容易在源代码中出现有趣情况时使用import pdb; pdb.set_trace()设置硬断点。然后你正常启动程序,它会正常执行,可能需要花费大量时间在没有你干预的情况下执行许多计算,直到达到你关心的程度。只有当您到达兴趣点时,调试器才会要求您进行干预。

至于表现:在第一种情况下,你必须逐步完成每一个陈述;在第二种情况下,在您到达兴趣点之前不会调用调试器。

在第一种情况下,CPU几乎花费所有时间等待人类做出响应;在第二部分,它将大部分时间花在执行程序上,直到达到兴趣点为止。