为什么python调试器在使用Pycharm时始终会在113上等待响应?

时间:2014-12-18 01:45:23

标签: python python-3.x pycharm

enter image description here

Bigger image

特别是我运行的代码可能运行了一段时间(大约10分钟),并且达到了断点。 python调试器总是向我显示这种错误"超时等待响应113" 我在屏幕切换中将它们圈成红色。

我使用Pycharm作为我的python IDE,它只是Pycharm IDE的问题吗?还是Python调试器问题? 如果不推荐Pycharm,任何人都可以给我更好的IDE,它能够有效地调试。

3 个答案:

答案 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在调试过程中也完全可用 - 命名空间位于当前帧内。