[Python-Dev] seeing off SET_LINENO
Michael Hudson
mwh@python.net
05 Aug 2002 09:54:22 +0100
Tim Peters <tim.one@comcast.net> writes:
> [Michael Hudson]
> > I've found another annoying problem. I'm not really expecting someone
> > here to sovle it for me, but writing it down might help me think
> > clearly.
> >
> > This is about the function epilogues that always get generated. I.e:
[snip example]
> > You can see here that the epilogue gets associated with line 3,
> > whereas it shouldn't really be associated with any line at all.
>
> It has to be associated with some line >= 3, as c_lnotab isn't capable of
> expressing anything other than that.
Yes.
> It *could* associate it with "line 4", though, if the compiler were
> changed to pump out another c_lntab entry at the epilogue. That
> would be better than saying the time is charged to line 3, since it
> isn't on line 3 then. I'd be happy to trade away total insanity for
> partial insanity <wink>.
This would be bad if you had
def f():
print 1
def g():
print 2
Anyway, I think I've found a way to get around this (see the patch).
> It stops on the "if a:" for me twice today, and I doubt that's any less
> confusing. If it were set to line 4 instead, an unaltered pdb would
> presumably show a blank line (whatever) after the function body, and an
> altered pdb could be taught that "the last line" c_lnotab claims exists is
> really devoted to exit code not associated with any source-file line.
Yes. I didn't really like the idea of heavily hacking pdb, as I don't
understand it.
Cheers,
M.
--
39. Re graphics: A picture is worth 10K words - but only those
to describe the picture. Hardly any sets of 10K words can be
adequately described with pictures.
-- Alan Perlis, http://www.cs.yale.edu/homes/perlis-alan/quotes.html