Symbolic debugger
Uses symbol table, memory map, and source code files to trace memory addresses to specific source code statements and variables
Inserts debugging checkpoints after each source code instruction; program execution can be paused
Debugging vs. production/distribution version
Incorporated directly in most interpreters