your favorite debugging tool?

Robert Kern robert.kern at gmail.com
Sun Aug 23 03:54:31 EDT 2009


On 2009-08-22 07:25 AM, Esmail wrote:
> Hi all,
>
> What is your favorite tool to help you debug your
> code? I've been getting along with 'print' statements
> but that is getting old and somewhat cumbersome.
>
> I'm primarily interested in utilities for Linux (but
> if you have recommendations for Windows, I'll take
> them too :)
>
> I use emacs as my primary development environment, FWIW.
> Someone mentioned winpdb .. anyone have experience/comments
> on this? Others?

I am frequently in the IPython interactive prompt for testing out stuff and even 
as the main way of running my code. It has a nice feature that when you get a 
traceback, you can open up pdb post-mortem.

In [8]: def f(x):
    ...:     y = 1 / x
    ...:     return y
    ...:

In [9]: f(1)
Out[9]: 1

In [10]: f(0)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/Users/rkern/<ipython console> in <module>()

/Users/rkern/<ipython console> in f(x)

ZeroDivisionError: integer division or modulo by zero

In [11]: %debug
 > <ipython console>(2)f()

ipdb> print x
0


I have a little function that I've been using recently to print out the function 
I am currently in along with the arguments:


def whereami():
     """ Print the current function call.

     import kerntrace;kerntrace.whereami()
     """
     import inspect
     frame = inspect.currentframe(1)
     args, varargs, varkw, f_locals = inspect.getargvalues(frame)
     if args[:1] == ['self']:
         del args[0]
     print '%s%s' % (frame.f_code.co_name, inspect.formatargvalues(args, varargs,
         varkw, f_locals))


I think pdb is okay, but I am looking forward to pydbgr's completion.

   http://code.google.com/p/pydbgr/

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-list mailing list