import sys import traceback def func1(): x = 1 func2() def func2(): y = 2 func3() def func3(): global err z = 3 try: raise ValueError() except Exception as exc: err = exc def dump_locals(tb): frame = tb.tb_frame main_frame = sys._getframe(1) print("locals:") while frame is not None: if frame is not main_frame: print("frame locals", frame.f_locals) frame = frame.f_back print() err = None func1() tb = err.__traceback__ dump_locals(tb) print("clear_frames()") traceback.clear_frames(tb) print() dump_locals(tb)