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