automatic debugger?

M

micklee74

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
 
P

Paul Rubin

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.

Dunno about Python but www.askigor.com automatically finds
the bugs in C programs. It's amazing.
 
R

R. Bernstein

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,780
Messages
2,569,611
Members
45,271
Latest member
BuyAtenaLabsCBD

Latest Threads

Top