(lispref.info)Using Debugger


Next: Debugger Commands Prev: Explicit Debug Up: Debugger

Using the Debugger
------------------

   When the debugger is entered, it displays the previously selected
buffer in one window and a buffer named `*Backtrace*' in another
window.  The backtrace buffer contains one line for each level of Lisp
function execution currently going on.  At the beginning of this buffer
is a message describing the reason that the debugger was invoked (such
as the error message and associated data, if it was invoked due to an
error).

   The backtrace buffer is read-only and uses a special major mode,
Debugger mode, in which letters are defined as debugger commands.  The
usual Emacs editing commands are available; thus, you can switch windows
to examine the buffer that was being edited at the time of the error,
switch buffers, visit files, or do any other sort of editing.  However,
the debugger is a recursive editing level (Note: Recursive Editing.)
and it is wise to go back to the backtrace buffer and exit the debugger
(with the `q' command) when you are finished with it.  Exiting the
debugger gets out of the recursive edit and kills the backtrace buffer.

   The contents of the backtrace buffer show you the functions that are
executing and the arguments that were given to them.  It also allows
you to specify a stack frame by moving point to the line describing
that frame.  (A stack frame is the place where the Lisp interpreter
records information about a particular invocation of a function.  The
frame whose line point is on is considered the "current frame".) Some
of the debugger commands operate on the current frame.

   The debugger itself should always be run byte-compiled, since it
makes assumptions about how many stack frames are used for the debugger
itself.  These assumptions are false if the debugger is running
interpreted.


automatically generated by info2www