[Michael]
At the moment 'line' is called by the SET_LINENO opcode. My patch changes it to be called when the co_lnotab indicates execution has moved onto a different line.
The reason this changes behaviour is that currently a SET_LINENO opcode is emitted for the def line of every function (I guess this is to cope with
def functions_like_this(): return 1
Right - sorry - my misunderstanding.
If my patch goes in, I'll probably change pdb to catch 'call' events, and nag authors of other debuggers that they should do the same.
Yes, I agree this should not be necessary. You may even find debugger implementers already hack around this :) And yes, I agree that if debugger implementers really want to hook something on function entry, they should use the facility explicity designed for that purpose ;)
It is possible to generate an extra 'line' trace event to mimic the old behaviour, but it's gross.
Agreed.
Now I've spent some minutes explaining myself, you can explain to me where you got the idea that I was even considering doing so from!
Sorry, I just didn't re-read the thread well enough. Jumping to conclusions seems to be one of my strong points ;) Mark.