I'd like to change my assessment of whether the problem encountered is a pdb bug or not. It could be a bug in Python. (Right now it is only known to be a bug in version 2.5.)
For a given traceback t, the question is whether t.tb_frame.f_lineno can ever be different from t.tb_lineno. Still, for now in pydb CVS, I've worked around this by checking. [EMAIL PROTECTED] (R. Bernstein) writes: > "Rotem" <[EMAIL PROTECTED]> writes: > > > Hi, > > > > Maybe I'm repeating a previous post (please correct me if I am). > > > > I've tried the following code in python 2.5 (r25:51908, Oct 6 2006, > > 15:22:41) > > example: > > > > from __future__ import with_statement > > import threading > > > > def f(): > > l = threading.Lock() > > with l: > > print "hello" > > raise Exception("error") > > print "world" > > > > try: > > f() > > except: > > import pdb > > pdb.pm() > > > > This fails because pdb.pm() attempts to access sys.last_traceback which > > is not assigned. > > Recent releases of pydb (http://bashdb.sf.net/pydb) don't suffer this > problem. (But see below.) > > > Trying: > > pdb.post_mortem(sys.exc_traceback) > > > > Yields the following: > > > test.py(9)f() > > -> print "world" > > (Pdb) > > > > the 'w' command yields a similar output, which implies that the > > exception was thrown from the wrong line. > > the traceback module is better, yielding correct results (displays line > > 8 instead of 9). > > > > Has anyone encountered this behavior? > > Yes, this seems to be a bug in pdb. It is using the traceback's f_line > instance variable rather than the tb_lineno instance variable. I guess > these two values are usually the same. In fact, I haven't been able to > come up with a Python 2.4 situtation where they are different. (If > someone can, I'd appreciate it if you'd send me a small example so I > can put it in the pydb regression tests.) Even in 2.5, it's kind of > hard to get a case where they are different. If I remove the "with", > the problem goes away. > > It was also bug in pydb, but I've just committed in CVS the fix for > this > > > > is pdb broken? > > Best as I can tell pdb isn't all that well maintained. (Had it been, I > probably wouldn't have devoted the time to pydb that I have been.) > > > I get similar results for larger/more complex pieces of code. > > > > > Thanks in advance, > > > > Rotem -- http://mail.python.org/mailman/listinfo/python-list