Python PyCharm';s调试器在点击copy.deepcopy()时放弃
PyCharm的调试器可以完美地工作,除了在命中包含内置方法copy.deepcopy()的行时。跳过它们会导致程序运行到结束,就好像没有调试程序在运行一样。我曾尝试进入deepcopy(),但似乎总是陷入递归循环。代码运行良好,无论是否使用调试器,我都无法在执行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
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
。你知道是什么原因吗?