特别是我运行的代码可能运行了一段时间(大约10分钟),并且达到了断点。 python调试器总是向我显示这种错误"超时等待响应113" 我在屏幕切换中将它们圈成红色。
我使用Pycharm作为我的python IDE,它只是Pycharm IDE的问题吗?还是Python调试器问题? 如果不推荐Pycharm,任何人都可以给我更好的IDE,它能够有效地调试。
答案 0 :(得分:10)
__repr__()
内对于我在堆栈中的变量进行了非常慢的操作。当PyCharm遇到断点时,它会抓取当前作用域中的所有变量并在其上调用__repr__
。这是一个展示这个问题的娱乐:
import time
class Foo(object):
def __repr__(self):
time.sleep(100)
return "look at me"
if __name__ == '__main__':
a = Foo()
print "set your breakpoint here"
PyCharm也会致电__getattribute__('__class__')
。如果你有一个行为不端的__getattribute__
也会让你失望。
这可能不是你发生的事情,但也许值得考虑。
答案 1 :(得分:1)
这是一个古老的问题,但回复可能会有所帮助。
从项目根目录删除.idea
文件夹。它将清理Pycharm的数据库,调试器将停止超时。在Windows上对我有效。
答案 2 :(得分:0)
正如您在Windows上一样,用于调试此类&大多数事情我使用旧的PythonWin
IDE:
这个IDE + Debugger在与调试的东西相同的过程中运行!
这样,在简单的交互式shell中与真实对象直接接触,例如pdb
,但具有可用的GUI,在大多数情况下是一个很大的优势。这种方式不存在通过repr / pickle在进程之间传输大量对象的问题,没有延迟,没有超时问题等。
如果一个步骤需要很长时间,那么PythonWin也会等待并且之前没有响应......(除非通过PythonWin系统托盘图标发出中断信号/ KeyboardInterrupt
)。
PythonWin的交互式shell在调试过程中也完全可用 - 命名空间位于当前帧内。