PyCharm的调试器工作正常,除非命中包含内置方法copy.deepcopy()的行。单步调试会导致程序运行结束,就像没有运行调试器一样。我试过踩到deepcopy(),但我似乎总是陷入递归循环。代码运行良好,调试器或没有调试器,我只是无法在deepcopy()操作后运行调试器,这很烦人。
pdb.set_trace()工作正常,但我最终还是想使用PyCharm的调试器,而且我真的很好奇这里发生了什么。
答案 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()
之后