18.1 The Lisp Debugger
The ordinary Lisp debugger provides the ability to suspend evaluation of a form. While evaluation is suspended (a state that is commonly known as a break), you may examine the run time stack, examine the values of local or global variables, or change those values. Since a break is a recursive edit, all the usual editing facilities of Emacs are available; you can even run programs that will enter the debugger recursively. See Recursive Editing.
| • Error Debugging |   | Entering the debugger when an error happens. |
| • Infinite Loops |   | Stopping and debugging a program that doesn’t exit. |
| • Function Debugging |   | Entering it when a certain function is called. |
| • Variable Debugging |   | Entering it when a variable is modified. |
| • Explicit Debug |   | Entering it at a certain point in the program. |
| • Using Debugger |   | What the debugger does. |
| • Backtraces |   | What you see while in the debugger. |
| • Debugger Commands |   | Commands used while in the debugger. |
| • Invoking the Debugger |   | How to call the function debug. |
| • Internals of Debugger |   | Subroutines of the debugger, and global variables. |