Skip to content

Instantly share code, notes, and snippets.

@sametz
Created October 22, 2017 18:33
Show Gist options
  • Save sametz/4c5b77ad7365f50a23ed5001e8206eae to your computer and use it in GitHub Desktop.
Save sametz/4c5b77ad7365f50a23ed5001e8206eae to your computer and use it in GitHub Desktop.
Tracing Function Calls (from PyMOTW: https://pymotw.com/2/sys/tracing.html)
#!/usr/bin/env python
# encoding: utf-8
import sys
def trace_calls(frame, event, arg):
if event != 'call':
return
co = frame.f_code
func_name = co.co_name
if func_name == 'write':
# Ignore write() calls from print statements
return
func_line_no = frame.f_lineno
func_filename = co.co_filename
caller = frame.f_back
caller_line_no = caller.f_lineno
caller_filename = caller.f_code.co_filename
print 'Call to %s on line %s of %s from line %s of %s' % \
(func_name, func_line_no, func_filename,
caller_line_no, caller_filename)
return
def b():
print 'in b()'
def a():
print 'in a()'
b()
sys.settrace(trace_calls)
a()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment