Function call arguments in stack trace?

Irmen de Jong irmen.NOSPAM at xs4all.nl
Tue Jun 7 16:01:44 EDT 2011


On 7-6-2011 21:31, Dun Peal wrote:
> On Jun 7, 1:23 pm, Neil Cerutti <ne... at norwich.edu> wrote:
>> Use pdb.
> 
> Neil, thanks for the tip; `pdb` is indeed a great debugging tool.
> 
> Still, it doesn't obviate the need for arguments in the stack trace.

If you can't use pdb perhaps you can use the following:

Pyro has always had a feature that prints detailed stacktraces. It is mainly meant to
clarify stacktraces that occur on a different machine (where you don't have the option
of using pdb), but can very well be used for normal code too:


import sys
import Pyro4.util
Pyro4.config.DETAILED_TRACEBACK=True
sys.excepthook=Pyro4.util.excepthook

def divide(a,b):
    return a//b

def dividebysomething(a):
    return divide(a,0)

print dividebysomething(10)


When you run this, this will be printed:

[E:\projects]python trace.py
--------------------------------------------------
 <<type 'exceptions.ZeroDivisionError'>> RAISED : integer division or modulo by zero
 Extended stacktrace follows (most recent call last)
--------------------------------------------------
File "trace.py", line (13), in <module>
Source code:
    print dividebysomething(10)
File "trace.py", line (11), in dividebysomething
Source code:
    return divide(a,0)
Local values:
                     a = 10
--------------------------------------------------
File "trace.py", line (8), in divide
Source code:
    return a//b
Local values:
                     a = 10
                     b = 0
--------------------------------------------------
 <<type 'exceptions.ZeroDivisionError'>> RAISED : integer division or modulo by zero
--------------------------------------------------


You can find the relevant code that produces these kinds of tracebacks in the util.py
source file of Pyro. You can get that from Pypi:
http://pypi.python.org/pypi/Pyro4/
or the file directly from subversion:
$ svn export svn://svn.razorvine.net/Pyro/Pyro4/trunk/src/Pyro4/util.py

Perhaps you can use this or adapt it to suit your needs.


Irmen de Jong



More information about the Python-list mailing list