write a debugger from scratch