Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyCharm';s调试器在点击copy.deepcopy()时放弃_Python_Debugging_Pycharm - Fatal编程技术网

Python PyCharm';s调试器在点击copy.deepcopy()时放弃

Python PyCharm';s调试器在点击copy.deepcopy()时放弃,python,debugging,pycharm,Python,Debugging,Pycharm,PyCharm的调试器可以完美地工作,除了在命中包含内置方法copy.deepcopy()的行时。跳过它们会导致程序运行到结束,就好像没有调试程序在运行一样。我曾尝试进入deepcopy(),但似乎总是陷入递归循环。代码运行良好,无论是否使用调试器,我都无法在执行deepcopy()操作后运行调试器,这很令人恼火 pdb.set_trace()工作正常,但最终我想使用PyCharm的调试器,我真的很好奇这里发生了什么。您是否尝试通过以下操作单独导入模块: from copy import dee

PyCharm的调试器可以完美地工作,除了在命中包含内置方法copy.deepcopy()的行时。跳过它们会导致程序运行到结束,就好像没有调试程序在运行一样。我曾尝试进入deepcopy(),但似乎总是陷入递归循环。代码运行良好,无论是否使用调试器,我都无法在执行deepcopy()操作后运行调试器,这很令人恼火


pdb.set_trace()工作正常,但最终我想使用PyCharm的调试器,我真的很好奇这里发生了什么。

您是否尝试通过以下操作单独导入模块:

from copy import deepcopy

我犯了同样的错误,因为pyCharm无法识别deepcopy本身

这也发生在我身上,经过多次尝试和错误后,我找到了导致它的原因,(但我不知道为什么)我正在deepcopy实现的对象getattr

def __getattr__(self, item):
     return self[item] 

它确实起作用了,只是停止了调试器。当我注释掉这行时,它又开始工作了

修改uu getattr_uuu方法以忽略以双下划线开头的属性。这适用于没有许多附加对象的对象,并防止PyCharm断开调试器的连接:

def __getattr__(self, k):
    if k.startwith("__"):
        raise AttributeError

但是,对于较大的对象(就层次结构而言),您需要为deepcopy中涉及的每个对象定义自己的uu deepcopy uu方法。

尝试
pydevd.settrace()
作为您尝试调试的函数的第一行,或者在
deepcopy()
我完成后,它对我起了作用。我甚至把这段代码移植到了iPython,它在那里运行得很好。不确定是什么原因导致您的案例出现问题。这非常奇怪,
Pycharm 2019.1.2
。你知道是什么原因吗?