Automatically reevaluate a list of expressions and
display their results each time Edebug updates the display.
Automatically reevaluate a list of expressions and
display their results each time Edebug updates the display.
@cindex stop points
The places within a function where Edebug can stop execution are called
@dfn{stop points}. These occur both before and after each subexpression
@cindex stop points
The places within a function where Edebug can stop execution are called
@dfn{stop points}. These occur both before and after each subexpression
Other frequently used commands are @kbd{b} to set a breakpoint at a stop
point, @kbd{g} to execute until a breakpoint is reached, and @kbd{q} to
Other frequently used commands are @kbd{b} to set a breakpoint at a stop
point, @kbd{g} to execute until a breakpoint is reached, and @kbd{q} to
When you enter a new Edebug level, the initial execution mode comes from
the value of the variable @code{edebug-initial-mode}. By default, this
specifies @code{step} mode. Note that you may reenter the same Edebug
When you enter a new Edebug level, the initial execution mode comes from
the value of the variable @code{edebug-initial-mode}. By default, this
specifies @code{step} mode. Note that you may reenter the same Edebug
several times from one command.
While executing or tracing, you can interrupt the execution by typing
several times from one command.
While executing or tracing, you can interrupt the execution by typing
If the containing sexp is a function definition itself, it continues
until just before the last sexp in the definition. If that is where you
If the containing sexp is a function definition itself, it continues
until just before the last sexp in the definition. If that is where you
is instrumented. It does this by calling @code{edebug-on-entry} and
then switching to @code{go} mode.
is instrumented. It does this by calling @code{edebug-on-entry} and
then switching to @code{go} mode.
From the Edebug recursive edit, you may invoke commands that activate
Edebug again recursively. Any time Edebug is active, you can quit to
the top level with @kbd{q} or abort one recursive edit level with
From the Edebug recursive edit, you may invoke commands that activate
Edebug again recursively. Any time Edebug is active, you can quit to
the top level with @kbd{q} or abort one recursive edit level with
stop point. If it evaluates to a non-@code{nil} value, then execution
is stopped or paused depending on the execution mode, just like a
breakpoint. Any errors that might occur as a result of evaluating the
stop point. If it evaluates to a non-@code{nil} value, then execution
is stopped or paused depending on the execution mode, just like a
breakpoint. Any errors that might occur as a result of evaluating the
exit adds lines to the trace buffer. On function entry, Edebug prints
@samp{::::@{} followed by the function name and argument values. On
function exit, Edebug prints @samp{::::@}} followed by the function name
exit adds lines to the trace buffer. On function entry, Edebug prints
@samp{::::@{} followed by the function name and argument values. On
function exit, Edebug prints @samp{::::@}} followed by the function name
@code{max-lisp-eval-depth} and @code{max-specpdl-size} are both
incremented one time to reduce Edebug's impact on the stack.
You could, however, still run out of stack space when using Edebug.
@code{max-lisp-eval-depth} and @code{max-specpdl-size} are both
incremented one time to reduce Edebug's impact on the stack.
You could, however, still run out of stack space when using Edebug.
The state of keyboard macro execution is saved and restored. While
Edebug is active, @code{executing-macro} is bound to
@code{edebug-continue-kbd-macro}.
The state of keyboard macro execution is saved and restored. While
Edebug is active, @code{executing-macro} is bound to
@code{edebug-continue-kbd-macro}.
@cindex current buffer point and mark (Edebug)
Which buffer is current, and where point and mark are in the current
buffer are saved and restored.
@cindex current buffer point and mark (Edebug)
Which buffer is current, and where point and mark are in the current
buffer are saved and restored.
@cindex window configuration (Edebug)
@findex save-excursion (Edebug)
@vindex edebug-save-windows
The Edebug Display Update, is saved and restored if
@code{edebug-save-windows} is non-@code{nil}. It is not restored on
error or quit, but the outside selected window @emph{is} reselected even
@cindex window configuration (Edebug)
@findex save-excursion (Edebug)
@vindex edebug-save-windows
The Edebug Display Update, is saved and restored if
@code{edebug-save-windows} is non-@code{nil}. It is not restored on
error or quit, but the outside selected window @emph{is} reselected even
If the value of @code{edebug-save-windows} is a list, only the listed
windows are saved and restored.
If the value of @code{edebug-save-windows} is a list, only the listed
windows are saved and restored.
@code{overlay-arrow-string} are saved and restored. So you can safely
invoke Edebug from the recursive edit elsewhere in the same buffer.
@code{overlay-arrow-string} are saved and restored. So you can safely
invoke Edebug from the recursive edit elsewhere in the same buffer.
The state of keyboard macro definition is saved and restored. While
Edebug is active, @code{defining-kbd-macro} is bound to
@code{edebug-continue-kbd-macro}.
The state of keyboard macro definition is saved and restored. While
Edebug is active, @code{defining-kbd-macro} is bound to
@code{edebug-continue-kbd-macro}.
the format of macro call arguments by using @code{def-edebug-spec} to
define an @dfn{Edebug specification} for each macro.
the format of macro call arguments by using @code{def-edebug-spec} to
define an @dfn{Edebug specification} for each macro.
Specify which expressions of a call to macro @var{macro} are forms to be
evaluated. For simple macros, the @var{specification} often looks very
similar to the formal argument list of the macro definition, but
Specify which expressions of a call to macro @var{macro} are forms to be
evaluated. For simple macros, the @var{specification} often looks very
similar to the formal argument list of the macro definition, but
Unless you are using Emacs 19 or XEmacs, this macro is only defined
in Edebug, so you may want to use the following which is equivalent:
@code{(put '@var{macro} 'edebug-form-spec '@var{specification})}
Unless you are using Emacs 19 or XEmacs, this macro is only defined
in Edebug, so you may want to use the following which is equivalent:
@code{(put '@var{macro} 'edebug-form-spec '@var{specification})}
Here is a simple example that defines the specification for the
@code{for} macro described in the XEmacs Lisp Reference Manual, followed
Here is a simple example that defines the specification for the
@code{for} macro described in the XEmacs Lisp Reference Manual, followed
To make just a few elements optional followed by non-optional elements,
use @code{[&optional @var{specs}@dots{}]}. To specify that several
To make just a few elements optional followed by non-optional elements,
use @code{[&optional @var{specs}@dots{}]}. To specify that several
@cindex &define (Edebug)
Indicates that the specification is for a defining form. The defining
form itself is not instrumented (i.e. Edebug does not stop before and
@cindex &define (Edebug)
Indicates that the specification is for a defining form. The defining
form itself is not instrumented (i.e. Edebug does not stop before and
But a defining form need not be named at all, in which
case a unique name will be created for it.
But a defining form need not be named at all, in which
case a unique name will be created for it.
@cindex backquote (Edebug)
Backquote (@kbd{`}) is a macro that results in an expression that may or
may not be evaluated. It is often used to simplify the definition of a
@cindex backquote (Edebug)
Backquote (@kbd{`}) is a macro that results in an expression that may or
may not be evaluated. It is often used to simplify the definition of a
when this is the case. However, the forms inside unquotes (@code{,} and
@code{,@@}) are evaluated and Edebug instruments them.
when this is the case. However, the forms inside unquotes (@code{,} and
@code{,@@}) are evaluated and Edebug instruments them.
arguments must use @code{def-form} instead of @code{form}. (This is to
reestablish the Edebugging context for those external forms.)
arguments must use @code{def-form} instead of @code{form}. (This is to
reestablish the Edebugging context for those external forms.)
@c (@pxref{Problems with Macros}) @c in XEmacs Lisp Reference Manual
(@pxref{Problems with Macros,,,, XEmacs Lisp Reference Manual}) @c Edebug Doc
is shown here but with @code{edebug-`}
@c (@pxref{Problems with Macros}) @c in XEmacs Lisp Reference Manual
(@pxref{Problems with Macros,,,, XEmacs Lisp Reference Manual}) @c Edebug Doc
is shown here but with @code{edebug-`}
[&optional stringp] ; @r{Match the doc string, if present.}
[&optional ("interactive" interactive)]
def-body))
[&optional stringp] ; @r{Match the doc string, if present.}
[&optional ("interactive" interactive)]
def-body))
@kbd{M-x edebug-toggle-save-windows} may be used to change this variable.
This command is bound to @kbd{W} in source code buffers.
@kbd{M-x edebug-toggle-save-windows} may be used to change this variable.
This command is bound to @kbd{W} in source code buffers.
@code{step}, @code{next}, @code{go}, @code{Go-nonstop}, @code{trace},
@code{Trace-fast}, @code{continue}, and @code{Continue-fast}.
@code{step}, @code{next}, @code{go}, @code{Go-nonstop}, @code{trace},
@code{Trace-fast}, @code{continue}, and @code{Continue-fast}.
@findex edebug-print-trace-after
Non-@code{nil} means display a trace of function entry and exit.
Tracing output is displayed in a buffer named @samp{*edebug-trace*}, one
@findex edebug-print-trace-after
Non-@code{nil} means display a trace of function entry and exit.
Tracing output is displayed in a buffer named @samp{*edebug-trace*}, one
If non-@code{nil}, Edebug tests coverage of all expressions debugged.
This is done by comparing the result of each expression
with the previous result. Coverage is considered OK if two different
If non-@code{nil}, Edebug tests coverage of all expressions debugged.
This is done by comparing the result of each expression
with the previous result. Coverage is considered OK if two different
If non-@code{nil}, continue defining or executing any keyboard macro
that is executing outside of Edebug. Use this with caution since it is not
debugged.
If non-@code{nil}, continue defining or executing any keyboard macro
that is executing outside of Edebug. Use this with caution since it is not
debugged.
If non-@code{nil}, bind @code{print-level} to this while printing
results in Edebug. The default value is @code{50}.
@end defopt
If non-@code{nil}, bind @code{print-level} to this while printing
results in Edebug. The default value is @code{50}.
@end defopt
If non-@code{nil}, bind @code{print-circle} to this while printing
results in Edebug. The default value is @code{nil}.
@end defopt
If non-@code{nil}, bind @code{print-circle} to this while printing
results in Edebug. The default value is @code{nil}.
@end defopt
@defopt edebug-global-break-condition
If non-@code{nil}, an expression to test for at every stop point.
@defopt edebug-global-break-condition
If non-@code{nil}, an expression to test for at every stop point.