A piece of software that runs another software while also having: r/w access to its memory Ability to continue/rewind execution Abilities Record Execution Types De-Optimizing Debugger Kernel Mode Debugger