barry@python.org (Barry A. Warsaw) writes: > >>>>> "MH" == Michael Hudson <mwh@python.net> writes: > > MH> 3) The patch changes behaviour -- for the better! You're now > MH> rather less likely to get the trace function called several > MH> times per line. > > Does this change affect debugging? Hmm, I hadn't actually dared to run pdb with my patch... have now, and it seems OK. There is a difference: The bytecode for, say, def f(): print 1 begins with two SET_LINENO's. One is for the line containing "def f():", one is for "print 1". My patch means the debugger doesn't stop on the "def f():" line -- unsurprisingly, given that no execution ever takes place on that line. It would be possible to force a call to the trace function on entry to the function. In fact, there's a commented out block for this in my patch. Another approach would presuambly be for pdb to stop on 'call' trace events as well as 'line' ones. I don't really understand, or use all that often, pdb. Also, you currently stop twice on the first line of a for loop, but only once with my patch. There are probably other situations of excessive SET_LINENO emission. I know Skip (think it was him) killed a couple last week. Bug compatibility is possible here too, but I don't see the advantage. > Have you tested how this change might interact with e.g. hotshot? test_hotshot was very important to me as evidence I was making progress! It currently fails due to the not-calling-trace-on-def-line issue, but as I said, I think this is a *good* thing... Cheers, M. -- The ability to quote is a serviceable substitute for wit. -- W. Somerset Maugham
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4