点击copy.deepcopy()时,PyCharm的调试器放弃了

时间:2015-09-28 20:15:22

标签: python debugging pycharm

PyCharm的调试器工作正常,除非命中包含内置方法copy.deepcopy()的行。单步调试会导致程序运行结束,就像没有运行调试器一样。我试过踩到deepcopy(),但我似乎总是陷入递归循环。代码运行良好,调试器或没有调试器,我只是无法在deepcopy()操作后运行调试器,这很烦人。

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

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

from copy import deepcopy

我得到的错误与pyCharm本身无法识别深度复制

答案 2 :(得分:0)

它也发生在我身上,经过大量的试验和错误后,我发现了导致它的原因,(但我不知道为什么)我正在深层实施的对象实现getattr

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

它确实有效,它只是停止了调试器。当我评论出这一行时,它又开始起作用了。

答案 3 :(得分:0)

尝试env: IMAGE: docker.pkg.github.com/${{ github.repository }}/awesome-module:${{ github.sha }} 作为您尝试调试的函数的第一行,或者紧接在pydevd.settrace()之后