fork download
  1. # Functions to trace
  2. # ==================
  3.  
  4. def baz():
  5. pass
  6.  
  7. def baz2():
  8. pass
  9.  
  10. def bar():
  11. baz()
  12. baz2()
  13.  
  14. def log():
  15. pass
  16.  
  17. def foo():
  18. bar()
  19. log()
  20.  
  21. def finish():
  22. pass
  23.  
  24. def insertVideoEntry():
  25. foo()
  26. finish()
  27.  
  28. # Names to trace
  29. # ==============
  30.  
  31. names = list(locals())
  32.  
  33. # Machinery for tracing
  34. # =====================
  35.  
  36. import os
  37. import sys
  38.  
  39. def trace(start, *names):
  40. def tracefunc(frame, event, arg):
  41. if event == 'call':
  42. code = frame.f_code
  43. name = code.co_name
  44. if name in names:
  45. level = -start
  46. while frame:
  47. frame = frame.f_back
  48. level += 1
  49. print('{}{}.{}()'.format(
  50. ' ' * level,
  51. os.path.splitext(os.path.basename(code.co_filename))[0],
  52. name))
  53. return tracefunc
  54. sys.settrace(tracefunc)
  55.  
  56. # Demonstration of tracing
  57. # ========================
  58.  
  59. trace(2, *names)
  60.  
  61. insertVideoEntry()
Success #stdin #stdout 0.02s 5748KB
stdin
Standard input is empty
stdout
prog.insertVideoEntry()
    prog.foo()
        prog.bar()
            prog.baz()
            prog.baz2()
        prog.log()
    prog.finish()