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():
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:22The tools mainly use the sys.settrace to setup a tracing function. The code of the tools is available as a gist in github.
Comments