【问题标题】:Remote debugging with WingIDE使用 WingIDE 进行远程调试
【发布时间】:2025-12-07 11:30:01
【问题描述】:

使用 WingIDE 调试 web 应用程序,我在一些 Python 代码中设置了一个断点,该断点在提交 web 表单时运行。就在断点之前,我插入了“importwingdbstub”来激活远程调试。但是,执行不会在断点处停止。我知道代码正在运行,因为如果我在断点之前插入“引发异常(sys.modules)”,执行就会停止,并且我的浏览器中会出现回溯,显示wingdbstub 已加载。

如果我将鼠标悬停在状态栏中的错误图标上,对话框会显示“没有调试进程/正在侦听 TCP/IP 50005 上的连接。允许的主机 127.0.0.1”。我知道当 a) 错误图标从绿色变为白色,并且 b) 调试工具栏按钮(步入、结束、退出等)消失时,我已经“丢失”了调试模式。

我尝试删除已编译的 .pyc 文件,以便在模块下次运行时重新编译,但问题仍然存在。

如何检查 Wing 是否正在侦听正确的端口?奇怪的是,远程调试有时会起作用,但大多数时候都不起作用。

任何帮助将不胜感激。作为记录,我使用的是 Python 3.1、CherryPy 3.20 和 WingIDE Personal 3.2.11。

艾伦

【问题讨论】:

    标签: python remote-debugging


    【解决方案1】:

    在 Windows 下,我遇到了您提到的相同行为,即远程调试有时有效,但经常“卡住”。我发现一些有助于解决这种情况的方法:

    1. 确保您的防火墙没有阻止进出 WingIDE 正在使用的端口和正在调试的进程的流量。 (在我的例子中,我必须同时解除wing.exe 我试图在Windows防火墙中调试的程序。)
    2. 确保在调试会话失败后没有积累任何僵尸 python 进程。这些可以保持与 IDE 的连接,使新生成的实例无法连接。 (在 Windows 下,您可以使用tasklist 命令检查正在运行的 python 实例,netstat -anp tcp 将显示任何卡在 TIME_WAIT 状态的套接字。)
    3. 在您的import wingdbstub 语句之后立即插入一个time.sleep(10) 调用。从控制台启动程序,确保它在 IDE 中连接(调试图标将变为绿色),然后点击 IDE 中的“暂停”按钮,然后点击“退出”。 (我无法开始解释原因,但在调试连接出现问题后,这似乎为我解决了几次问题。)

    上述建议可能也适用于Linux,但我目前只在Windows下遇到过这个问题......

    【讨论】:

    • 谢谢 evadeflow - 我会尝试你的建议,看看我的进展如何。问候。