[Tutor] "Visually following" Python program execution

Kent Johnson kent_johnson at skillsoft.com
Sat Oct 16 21:24:30 CEST 2004


This is pretty much what a debugger does. In fact the IDLE debugger is not 
far from this at all, can you just use it or modify it to do what you want?

I suggest you look at how pdb and the IDLE debugger work. A few starting 
points would be the pdb module docs at 
http://docs.python.org/lib/module-pdb.html especially the "How it works" 
section. Both pdb and IDLE use the bdb module as a base, you should 
probably do the same.

This is a challenging project, good luck!
Kent

At 02:37 PM 10/16/2004 -0300, André Roberge wrote:
>Note: I posted this on comp.lang.python last night from a friend's house.
>Let's see if the tutor folks can beat the newsgroup readers who, so far,
>have shown little interest in my problem.
>André
>
>===
>I want to "import and execute" a python program (input_test.py below)
>within another program (execute_test.py below) and "watch it" being
>executed.
>By watching it, I mean to display the file input_test.py in a window
>(GUI) and
>highlighting the line being executed.
>I am *simulating* this here by printing the line being executed with
>the corresponding line number and it works as expected for "simple"
>programs.
>
>The problem arises when I want to do a loop (or other similar blocks).
>If I write a loop as
>
>for i in range(2):
>    print i
>
>exec() gives an EOF error, as it processes the "for" line.
>I have tried to put the loop on a single physical line, something like
>for i in range(2):\n    print i
>
>but this didn't work either.   I really would like to be able to
>follow within the loops too...
>Any pointer would be greatly appreciated.
>
>Andre Roberge
>
>Btw, input_test.py is already processed to tag on the ";NUM = ...". It is 
>not the file as I would want it to appear on a window being
>traced.
>
>===== File Constants.py ====
>NUM = 1
>
>===== File input_test.py ===
>from Constants import * ; NUM = 2
>print "Starting within input_test"; NUM = 3
>print "Within input_test, NUM =", NUM; NUM = 4
>print "Done!"
>
>===== File execute_test.py ===
>import time
>from Constants import *
>inp = open("input_test.py", "r")
>
>for line in inp.readlines():
>    print "NUM =", NUM, ":",
>    exec(line)
>    time.sleep(1)
>
>inp.close()
>
>======= Output from the program =====
>NUM = 1 : NUM = 2 : Starting within input_test
>NUM = 3 : Within input_test, NUM = 3
>NUM = 4 : Done!
>
>_______________________________________________
>Tutor maillist  -  Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor



More information about the Tutor mailing list