import sys def j(lineno): frame = sys._getframe().f_back called_from = frame def hook(frame, event, arg): if event == 'line' and frame == called_from: try: frame.f_lineno = lineno except ValueError as e: print "jump failed:", e while frame: frame.f_trace = None frame = frame.f_back return None return hook while frame: frame.f_trace = hook frame = frame.f_back sys.settrace(hook) def foo(): a = 1 j(30) a = 2 print 1 print 2 if a == 1: j(28) print 4 foo()