| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here we describe in full detail the function debug that is used
to invoke the debugger.
The Debugger mode c and r commands exit the recursive edit;
then debug switches back to the previous buffer and returns to
whatever called debug. This is the only way the function
debug can return to its caller.
The use of the debugger-args is that debug displays the
rest of its arguments at the top of the `*Backtrace*' buffer, so
that the user can see them. Except as described below, this is the
only way these arguments are used.
However, certain values for first argument to debug have a
special significance. (Normally, these values are used only by the
internals of Emacs, and not by programmers calling debug.) Here
is a table of these special values:
lambda
lambda means debug was called because
of entry to a function when debug-on-next-call was
non-nil. The debugger displays `Entering:' as a line of
text at the top of the buffer.
debug
debug as first argument indicates a call to debug because
of entry to a function that was set to debug on entry. The debugger
displays `Entering:', just as in the lambda case. It also
marks the stack frame for that function so that it will invoke the
debugger when exited.
t
t, this indicates a call to
debug due to evaluation of a list form when
debug-on-next-call is non-nil. The debugger displays the
following as the top line in the buffer:
Beginning evaluation of function call form: |
exit
exit, it indicates the exit of a stack
frame previously marked to invoke the debugger on exit. The second
argument given to debug in this case is the value being returned
from the frame. The debugger displays `Return value:' in the top
line of the buffer, followed by the value being returned.
error
error, the debugger indicates that
it is being entered because an error or quit was signaled and not
handled, by displaying `Signaling:' followed by the error signaled
and any arguments to signal. For example,
(let ((debug-on-error t)) (/ 1 0)) ------ Buffer: *Backtrace* ------ Signaling: (arith-error) /(1 0) ... ------ Buffer: *Backtrace* ------ |
If an error was signaled, presumably the variable
debug-on-error is non-nil. If quit was signaled,
then presumably the variable debug-on-quit is non-nil.
nil
nil as the first of the debugger-args when you want
to enter the debugger explicitly. The rest of the debugger-args
are printed on the top line of the buffer. You can use this feature to
display messages--for example, to remind yourself of the conditions
under which debug is called.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |