Python 调试器 : interactive debugging vs. 硬编码断点

标签 python debugging pdb

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

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

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

  • 它们在计算时间方面是否有不同的性能

最佳答案

python -m pdb foo.py 会在程序开始时将您弹出到调试器中。这可能对您想要作为一个整体进行分析的非常小的程序很有用。

在更大更复杂的程序中,如果您想调查的情况是在高函数调用堆栈顶部经过大量计算之后出现的,这种用法是非常不切实际的。

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

至于性能:在第一种情况下,您必须按顺序逐步执行每条语句;在第二种情况下,在您到达感兴趣的点之前不会调用调试器。

在第一种情况下,CPU 几乎所有的时间都在等待人类的响应;在第二个中,它大部分时间都花在执行程序上,直到到达感兴趣的点。

关于Python 调试器 : interactive debugging vs. 硬编码断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678503/

相关文章:

python,igraph 处理顶点重新编号

ios - XCode:如何删除 iPhone 上的调试应用程序而不删除所有文档?

c# - Visual Studio 符号缓存中的 D0C3BDDD4ADD4E87B2B5E803303B8D772 等目录名称是什么意思?

python - 如何用条件逐行替换

Python-将列表中隐藏的字典转换为DataFrame

python - 如何使用正则表达式拆分列表元素

python - 你如何调试 Django 模板?

database - 五十一个数据库错误 - 重命名现有日志文件并且子进程退出并出现错误 100

python - 总是在异常时调用 python 调试器的好通用方法

python - pdb中如何切换进程