Skip to main content

A Simple Stack Trace Decorator of Python Function Calls

I have write a simple tools for tracing python function calls. The tools prints out the stack of call while execute the function. Use it as bellow:

Consider several functions defined as below(in test.py), we make stack_trace the docorator of test():

import stack_trace def foo(): pass def bar(): foo() return 0 def error(): 1/0 def recur(i): if i == 0: return recur(i-1) @stack_trace.stack_trace(with_return=True, with_exception=True, max_depth=3) def test(): bar() recur(5)
error() test()


The result of executing test():
test [call] in test.py line:18 bar [call] in test.py line:6 foo [call] in test.py line:3 foo [return] None in test.py line:4 bar [return] 0 in test.py line:8 recur [call] in test.py line:13 recur [call] in test.py line:13 recur [call] in test.py line:13 recur [return] None in test.py line:16 recur [return] None in test.py line:16 recur [return] None in test.py line:16 error [call] in test.py line:10 error [exception] <type 'exceptions.ZeroDivisionError'> in test.py line:11 error [return] None in test.py line:11 test [exception] <type 'exceptions.ZeroDivisionError'> in test.py line:22 test [return] None in test.py line:22
The tools mainly use the sys.settrace to setup a tracing function. The code of the tools is available as a gist in github.

Comments