Minimal debug/rep functionality

Peter Hansen peter at engcorp.com
Wed Sep 18 23:14:25 EDT 2002


Mark wrote:
> Hello all,
> 
> In a nutshell, what I'd like to do is develop a utility that would print out 
> every line in a python program as the program executes (I may even just 
> want to print line numbers).  I can see hints of how to do this in pdb (and 
> more directly in the underlying bdb class) and also in the code module.
> 
> So, 
> 
> 1) Should I try and inherit a class and override some methods or should I 
> just pull out the relevant code and hand spin a small interpreter.
> 
> 2) Anyone have a 20 liner solution for this?

Sorry, I couldn't find a solution that was larger than six lines:

 >>> def trace(frame, event, arg):
...   if event == 'line':
...      print '%s: %s' % (frame.f_code.co_filename, frame.f_lineno)
...   return trace
...
 >>> import sys
 >>> sys.settrace(trace)

Well, if you want to print the actual line of source you could probably
stretch it out to eight or ten lines... although I think you need
only one more line for the simplest approach.  ;-)

-Peter




More information about the Python-list mailing list