使用WingIDE调试Web应用程序,我在一些Python代码中设置了一个断点,该代码在提交Web表单时运行。在断点之前,我插入了'import wingdbstub'来激活远程deubgging。但是,执行不会在断点处停止。我知道代码正在运行,因为如果我在断点之前插入'raise exception(sys.modules)',执行会停止并且我的浏览器中会出现一个回溯,显示wingdbstub已加载。
如果我将鼠标悬停在状态栏中的错误图标上,则会出现一个对话框,显示“无调试进程/侦听TCP / IP 50005上的连接。允许的主机127.0.0.1”。当a)bug图标从绿色变为白色时,我知道我已经“丢失”了调试模式,并且b)调试工具栏按钮(步入,向上,向外等)消失。
我尝试删除已编译的.pyc文件,以便在下次运行模块时重新编译,但问题仍然存在。
如何检查Wing是否正在侦听正确的端口?奇怪的是,远程调试有时会起作用,但大部分时间都没有。
任何帮助将不胜感激。为了记录,我使用的是Python 3.1,CherryPy 3.20和WingIDE Personal 3.2.11。
艾伦
答案 0 :(得分:2)
在Windows下,我遇到了你提到的相同行为,即远程调试有时会起作用,但通常会“卡住”。我找到了一些有助于解决这种情况的事情:
tasklist
命令检查运行的python实例,netstat -anp tcp
将显示处于TIME_WAIT状态的任何套接字。)time.sleep(10)
声明后立即插入import wingdbstub
来电。从控制台启动程序,确保它在IDE中连接(调试图标将变为绿色),然后点击IDE中的“暂停”按钮,然后点击“Step Out”。 (我无法解释原因,但是在调试连接变得不稳定之后,这对我来说似乎已经好几次了。)上述建议也可能适用于Linux,但到目前为止我只在Windows下遇到过这个问题......