【问题标题】:Debug PyDev+Eclipse - Code not reloads after code change in breakpoint/suspend mode调试 PyDev+Eclipse - 在断点/挂起模式下代码更改后代码不会重新加载
【发布时间】:2014-03-11 14:14:53
【问题描述】:

我经常做这样的步骤,想优化调试速度:

  1. 我正在设置一些断点。
  2. 我正在运行 Google Appengine 应用程序 (Python 2.5.2+)。
  3. 发生断点时,我经常更改代码以修复错误。
  4. 代码更改后想要再次测试,但如果我在断点/挂起模式下更改代码会出现问题,应用程序不会更新与我的代码更改 - 因此需要重新加载缓慢。

有人知道暂停后强制重新加载的根本原因是什么,还是 PyDev 错误/限制?

【问题讨论】:

    标签: python debugging google-app-engine pydev


    【解决方案1】:

    调试工作的方式不是逐行执行source调试将您的源代码“编译”为字节码(.pyc 文件)并执行这些代码,而不是您的源代码

    调试只跟踪 .pyc 文件的哪一部分与 .py 文件的哪一行相对应,并显示该信息以方便您使用,但 .py 文件本身并不是调试器用来运行程序的文件.

    因此,如果您更改源/.py 文件并希望调试器确认这些更改,则需要先“重新编译”.pyc 文件。

    HTH!

    【讨论】:

    • 因此您认为问题在于 Eclipse 在源更改后不重建代码,因此不会从 *.py 生成新的 *.pyc。我会尽快检查的。
    • @Chameleon - 当运行 python 程序时,会启动一个线程来执行当时可用的 pyc 代码(在大多数情况下,此代码在执行之前被加载到内存中)。一旦程序启动,您就无法更改该代码。您唯一能做的就是停止执行,生成新的 pyc 文件,然后通过 NEW 启动运行它们。换句话说:PyDev 所做的是完成调试的唯一方法。额外的缓慢可能是由于 Eclipse 具有蹩脚的 bradypus 的速度...... :(
    • 加载程序时,我看到如果我更改代码有两条路径,并且它 not 处于断点模式 - 它会更改程序或处于断点模式 - 它不是改变程序。今天我将尝试在断点模式下强制重建它应该比重新加载更快。如果 Pydev 支持这种重建,它会在代码更改后更快。
    • 我认为这并不能真正回答问题。 Mac,您是说 PyDev 是否​​支持在不重新启动 GAE 的情况下重新加载/重新编译模块? PyDev+GAE video demonstrates 它可以工作,虽然它不适用于 Mac OS X。@Chameleon,你在什么操作系统上?如果我将 PyDev 和 Eclipse 排除在外,GAE 会在我更改源 .py 文件时重新编译 .pyc 文件,所以这似乎是 PyDev 中的一个错误。
    • 有时你会感觉到别人和别人 - 这并不奇怪:) 考虑到行为的差异是 DEBUG 和 NOT DEBUG 模式 - 正如我解释的 DEBUG 模式存在问题。操作系统与它无关 - 它是 WinXP 或 Win7 - 不要在操作系统上赌钱。
    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2020-10-17
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多