如何在eclipse中的pydev调试期间动态重新编译python代码

时间:2013-01-24 15:07:06

标签: python debugging pydev on-the-fly

我假设这个问题对于pydev来说是通用的,但我在eclipse中只使用了pydev,所以我不确定......

在过去,我不小心做了这件事,我想学习如何定期做这件事:

  1. 我在eclipse pydev
  2. 中运行了断点调试器
  3. 我停止了一行代码并意识到我需要改变一些东西
  4. 我对代码进行了更改
  5. 我保存了代码
  6. 调试器在我上次更改之前跳转,以便我可以继续调试会话并使用新的更改:
    • 好像旧代码从未发生过
  7. 我不确定这是如何工作的,但我想知道如何触发这个,因为我调试时不再发生这种情况。

1 个答案:

答案 0 :(得分:0)

嗯,这有一些方面:

如果您正在使用框架(例如Django),它会内置重新加载支持,因此,您可以即时获得代码更改(通常通过生成新进程)。

现在如果不是这样的话,在最新的PyDev版本中,PyDev将跟踪代码所做的版本,并尝试热插拔'新代码的旧代码。

它基于xreload,并将尝试在运行时修补类(即:直接更改类/方法代码)。

唯一要注意的是,它只会在你离开给定的函数后再次生效,因为Python无法在正在运行的框架上修补代码(有时可能会取决于代码的构造方式,不能成功进行交换,但对于常见情况,它确实可以正常工作)。

请注意,这仅适用于最新的PyDev版本。它出现在一些早期版本中,但由于其实施中存在问题而被删除 - 但进行了改造并重新添加:)

有关详细信息,请参阅:http://pydev.org/manual_adv_debugger_auto_reload.html