简体   繁体   中英

pydev debugger not working

I am working with pydev (latest version) and the debugger is not working anymore (specifically breakpoints do not work). I get a strange error:

pydev debugger: starting Traceback (most recent call last):

with no further text. ...

I am working with stackless python 2.7 and pyside (almost latest version). The breakpoints that are not working are not within stackless tasklets.

Anyone know the cause or a fix?

OK, (slightly embarassed) i have had a similar problem in the past, posted here and got extensive help here

I used that post to pinpoint the problem to this method:

def __getattr__(self, name):
    if name in self._code_:
        func = self.getfunction(name)
        setattr(self, name, func)
        return func 
    else:
        return super(AtomicProcess, self).__getattr__(name)

I would like to use this or a similar method to set the attribute at the latest possible time (when it is called).I added the super call to possibly fix the problem, but no dice.

  • Does anyone know what causes the problem in this method?
  • Does anyone have a fix that achieves the late initialization but avoids the pydev problem?

Also I should mention that my code runs without problem but that the debugger seems to go into some infinite recursion in the method above, recovers and ignores breakpoints after this method.

Cheers, Lars

PS: anyone? Are pydev developers following stackoverflow or is there another place i might try?

It seems it's something as the previous issue although I'm not sure what (if you can pass me the code I can take a look at it, but without it, the only thing I can do is point to the last thread we had).

Keep in mind that if you have a recursion exception, this is something that breaks the Python debugging facility... What you can do as a workaround in the meanwhile is using the remote debugger to improve on that.

I do have a hunch thought: My guess is that you access something in 'self' which is calling __getattr__ again... (which generates a recursion and breaks the debugger).

Another possible thing: instead of using the 'super' idiom in: super(AtomicProcess, self).__getattr__(name) , use the superclass directly: Superclass.__getattr__(self, name) ...

Cheers,

Fabio

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM