[Python-ideas] Interactive trace function

R. David Murray rdmurray at bitdance.com
Fri Mar 20 18:02:27 CET 2009


Jacob Holm <jh at improva.dk> wrote:
> Gerald Britton wrote:
> > Years ago I worked for a while in REXX.  It was a fairly advanced
> > scripting language for its time and we used it on some substantial
> > mainframe projects.  One thing that I liked and miss in Python is the
> > "trace" statement.
> >
> > Basically, you could insert a "trace" statement in a REXX program and
> > then, when you ran it, it would step through the program a line at a
> > time.  This gave you the chance to follow your code through tricky
> > sections and display variables after each step.  I know it saved me
> > hours of troubleshooting of tricky problems.
> >
> > I would like to know if anyone has ever proposed something similar for
> > Python.  It would work something like this:
> >
> > 1. In an interactive session, you could issue a trace command.
> > Thereafter, whatever you ran would be done a step at a time, with a
> > terminal prompt after every statement for you to print anything you
> > like that would help you understand the state of the program at that
> > point.
> >
> > 2. From the command line, you could add a --trace option, or something
> > like it, to ask Python to launch the program interactively with trace
> > enabled, which would work as described above.
> >
> > 3. If you have a problematic piece of code, you could insert a trace
> > statement just before the troubled section. Then when you ran the
> > program, when it came to the trace statement, it would begin an
> > interactive trace at that point as described above. (You would have to
> > start your program from the command line for this to make sense.)
> >
> > Has something like this ever come up before?  Is there a way to do this today?
> >
> >
> >   
> How about:
> 
> import pdb; pdb.set_trace()
> 
> I use that for debugging all the time...

I just learned about this one, which is also sometimes useful (when you
_don't_ want the interactive prompt, you just want to see the sequence
of execution):

    python -m trace -t <pythonprogram>

--
R. David Murray           http://www.bitdance.com




More information about the Python-ideas mailing list