0

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

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

  1. 我在 eclipse pydev 中运行断点调试器
  2. 我停在一行代码上,意识到我需要改变一些东西
  3. 我对我的代码进行了更改
  4. 我保存了代码
  5. 调试器在我最后一次更改之前跳转,以便我可以继续调试会话并使用新更改:
    • 好像旧代码从未发生过

我不确定这是如何工作的,但我想确切地了解如何触发它,因为在我调试时它不再发生。

4

1 回答 1

0

嗯,这有一些方面:

如果您使用的是框架(例如 Django),它具有内置的重新加载支持,因此,您将即时获得代码更改(通常通过产生一个新进程)。

现在,如果不是这种情况,在最新的 PyDev 版本中,PyDev 将跟踪对代码所做的版本,并将尝试将旧代码“热交换”为新代码。

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

唯一需要注意的是,它只有在您离开给定函数并稍后再次返回时才会生效,因为 Python 无法在运行的帧上修补代码(有时它可能无法成功执行交换取决于代码的构造方式,但对于常见的情况,它确实工作得很好)。

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

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

于 2014-07-31T18:25:11.480 回答