anthony shaw <anthony.p.s...@gmail.com> added the comment:
Took a while, but I worked out a solution: import sys import dis import traceback import io def t(frame, event, args): frame.f_trace_opcodes=True stack = traceback.extract_stack(frame) pad = " "*len(stack) + "|" if event == 'opcode': with io.StringIO() as out: dis.disco(frame.f_code, frame.f_lasti, file=out) lines = out.getvalue().split('\n') [print(f"{pad}{l}") for l in lines] elif event == 'call': print(f"{pad}Calling {frame.f_code}") elif event == 'return': print(f"{pad}Returning {args}") elif event == 'line': print(f"{pad}Changing line to {frame.f_lineno}") else: print(f"{pad}{frame} ({event} - {args})") print(f"{pad}----------------------------------") return t sys.settrace(t) eval('"-".join([letter for letter in "hello"])') ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue36420> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com