【发布时间】:2011-01-28 19:59:24
【问题描述】:
是否有任何调试器允许在调试时更改 Python 代码?
换句话说:发生运行时异常,调试器停止,我以任何我喜欢的方式更改代码,并告诉程序继续。
我知道这种方法的问题,如果我动态地重新定义函数,对函数的引用仍会指向旧定义,依此类推。我对此很满意,因为我只想能够在非常简单的情况下进行小修复。
另一方面,我也对理论上是否可以允许更改 Python 代码而不遇到这些问题感兴趣:即,以某种方式更新对已更改对象的所有引用等。我几乎可以肯定第二个问题的答案是否定的,但如果我错了,我想知道。
编辑:如果我的目标(在发生异常时以交互方式更改代码,然后继续执行)可以在没有调试器的情况下实现 - 那也很好。我不需要使用调试器。
【问题讨论】:
-
为什么需要调试器?我现在使用 python 有一段时间了,但我从来没有觉得需要一个..
-
@Gabi:因为调试器允许您浏览变量以查看它们的值、动态执行函数并检查代码是否正在运行,而不是依赖于打印语句。如果您要对复杂的逻辑或大量数据进行故障排除,调试器将变得非常宝贵。
-
@Jordan:在过去的 30 年中,我曾经使用调试器在 C 核心文件中查找堆栈跟踪。您建议的所有事情都可以通过其他方式完成。调试器并不是真正的“无价之宝”。这只是一种偏好。
-
@max:这通常是一个非常糟糕的主意。无论有没有调试器,您所说的通常都是毫无意义的。简单情况下的小修复只是“编辑并重新运行”。是什么阻止您编辑和重新运行?
-
@S Lott 用例:我在断言捕获的函数中出错。执行到该点需要几分钟。我知道该函数没有在任何地方作为参数传递等等。我可以修复代码并继续执行,而不必再等几分钟。感谢您的 cmets。
标签: python debugging python-3.x