【发布时间】:2014-10-27 08:35:50
【问题描述】:
假设我正在使用 Eclipse 的 PyDev 单步执行代码。
有没有办法在断点下添加一些新代码...在运行时/运行时修改代码?
【问题讨论】:
-
好吧,你可以想出一些代码,例如,
imp.reload一个模块。如果您编写的代码主要是无状态响应(如 Web 框架),并且只希望下一个请求获取新代码,那很容易(事实上,许多框架,如 Flask,自动执行此操作)。如果您正在处理有状态的代码,则必须保留状态对象的弱字典以腌制-取消腌制所有内容。如果要影响当前的函数堆栈,则需要一个函数来重建帧。这一切都是可行的(至少在 CPython/PyPy 中)……但一点也不容易,而且可能是个坏主意。 -
可能可以重新导入模块,但这将是一个比 OP 要求的更有限的机制。被4秒打败!
标签: python eclipse debugging pydev