[EMAIL PROTECTED] writes: > hi > is there something like an automatic debugger module available in > python? Say if i enable this auto debugger, it is able to run thru the > whole python program, print variable values at each point, or print > calls to functions..etc...just like the pdb module, but now it's > automatic. > thanks
pydb (http://bashdb.sourceforge.net) has a linetrace option sort of like what's done in POSIX shells. Here's an example: #!/usr/bin/python """Towers of Hanoi""" import sys,os def hanoi(n,a,b,c): if n-1 > 0: hanoi(n-1, a, c, b) print "Move disk %s to %s" % (a, b) if n-1 > 0: hanoi(n-1, c, b, a) i_args=len(sys.argv) if i_args != 1 and i_args != 2: print "*** Need number of disks or no parameter" sys.exit(1) n=3 if i_args > 1: try: n = int(sys.argv[1]) except ValueError, msg: print "** Expecting an integer, got: %s" % repr(sys.argv[1]) sys.exit(2) if n < 1 or n > 100: print "*** number of disks should be between 1 and 100" sys.exit(2) hanoi(n, "a", "b", "c") $ pydb --basename --trace hanoi.py (hanoi.py:2): + """Towers of Hanoi""" (hanoi.py:3): + import sys,os (hanoi.py:5): + def hanoi(n,a,b,c): (hanoi.py:12): + i_args=len(sys.argv) (hanoi.py:13): + if i_args != 1 and i_args != 2: (hanoi.py:17): + n=3 (hanoi.py:19): + if i_args > 1: (hanoi.py:26): + if n < 1 or n > 100: (hanoi.py:30): + hanoi(n, "a", "b", "c") --Call-- (hanoi.py:5): hanoi + def hanoi(n,a,b,c): (hanoi.py:6): hanoi + if n-1 > 0: (hanoi.py:7): hanoi + hanoi(n-1, a, c, b) --Call-- (hanoi.py:5): hanoi + def hanoi(n,a,b,c): (hanoi.py:6): hanoi + if n-1 > 0: (hanoi.py:7): hanoi + hanoi(n-1, a, c, b) --Call-- (hanoi.py:5): hanoi + def hanoi(n,a,b,c): (hanoi.py:6): hanoi + if n-1 > 0: (hanoi.py:8): hanoi + print "Move disk %s to %s" % (a, b) Move disk a to b (hanoi.py:9): hanoi + if n-1 > 0: --Return-- (hanoi.py:9): hanoi + if n-1 > 0: (hanoi.py:8): hanoi + print "Move disk %s to %s" % (a, b) Move disk a to c (hanoi.py:9): hanoi + if n-1 > 0: (hanoi.py:10): hanoi + hanoi(n-1, c, b, a) --Call-- (hanoi.py:5): hanoi + def hanoi(n,a,b,c): (hanoi.py:6): hanoi + if n-1 > 0: (hanoi.py:8): hanoi + print "Move disk %s to %s" % (a, b) Move disk b to c (hanoi.py:9): hanoi + if n-1 > 0: --Return-- (hanoi.py:9): hanoi + if n-1 > 0: --Return-- (hanoi.py:10): hanoi + hanoi(n-1, c, b, a) (hanoi.py:8): hanoi + print "Move disk %s to %s" % (a, b) Move disk a to b (hanoi.py:9): hanoi + if n-1 > 0: (hanoi.py:10): hanoi + hanoi(n-1, c, b, a) --Call-- (hanoi.py:5): hanoi + def hanoi(n,a,b,c): (hanoi.py:6): hanoi + if n-1 > 0: (hanoi.py:7): hanoi + hanoi(n-1, a, c, b) --Call-- (hanoi.py:5): hanoi + def hanoi(n,a,b,c): (hanoi.py:6): hanoi + if n-1 > 0: (hanoi.py:8): hanoi + print "Move disk %s to %s" % (a, b) Move disk c to a (hanoi.py:9): hanoi + if n-1 > 0: --Return-- (hanoi.py:9): hanoi + if n-1 > 0: (hanoi.py:8): hanoi + print "Move disk %s to %s" % (a, b) Move disk c to b (hanoi.py:9): hanoi + if n-1 > 0: (hanoi.py:10): hanoi + hanoi(n-1, c, b, a) --Call-- (hanoi.py:5): hanoi + def hanoi(n,a,b,c): (hanoi.py:6): hanoi + if n-1 > 0: (hanoi.py:8): hanoi + print "Move disk %s to %s" % (a, b) Move disk a to b (hanoi.py:9): hanoi + if n-1 > 0: --Return-- (hanoi.py:9): hanoi + if n-1 > 0: --Return-- (hanoi.py:10): hanoi + hanoi(n-1, c, b, a) --Return-- (hanoi.py:10): hanoi + hanoi(n-1, c, b, a) --Return-- (hanoi.py:30): + hanoi(n, "a", "b", "c") --Return-- (<string>:1): + (bdb.py:366): run + exec cmd in globals, locals -- http://mail.python.org/mailman/listinfo/python-list