elisp: Edebug Options
17.2.16 Edebug Options
----------------------
These options affect the behavior of Edebug:
-- User Option: edebug-setup-hook
Functions to call before Edebug is used. Each time it is set to a
new value, Edebug will call those functions once and then reset
‘edebug-setup-hook’ to ‘nil’. You could use this to load up Edebug
specifications associated with a package you are using, but only
when you also use Edebug. Instrumenting.
-- User Option: edebug-all-defs
If this is non-‘nil’, normal evaluation of defining forms such as
‘defun’ and ‘defmacro’ instruments them for Edebug. This applies
to ‘eval-defun’, ‘eval-region’, ‘eval-buffer’, and
‘eval-current-buffer’.
Use the command ‘M-x edebug-all-defs’ to toggle the value of this
option. Instrumenting.
-- User Option: edebug-all-forms
If this is non-‘nil’, the commands ‘eval-defun’, ‘eval-region’,
‘eval-buffer’, and ‘eval-current-buffer’ instrument all forms, even
those that don’t define anything. This doesn’t apply to loading or
evaluations in the minibuffer.
Use the command ‘M-x edebug-all-forms’ to toggle the value of this
option. Instrumenting.
-- User Option: edebug-save-windows
If this is non-‘nil’, Edebug saves and restores the window
configuration. That takes some time, so if your program does not
care what happens to the window configurations, it is better to set
this variable to ‘nil’.
If the value is a list, only the listed windows are saved and
restored.
You can use the ‘W’ command in Edebug to change this variable
interactively. Edebug Display Update.
-- User Option: edebug-save-displayed-buffer-points
If this is non-‘nil’, Edebug saves and restores point in all
displayed buffers.
Saving and restoring point in other buffers is necessary if you are
debugging code that changes the point of a buffer that is displayed
in a non-selected window. If Edebug or the user then selects the
window, point in that buffer will move to the window’s value of
point.
Saving and restoring point in all buffers is expensive, since it
requires selecting each window twice, so enable this only if you
need it. Edebug Display Update.
-- User Option: edebug-initial-mode
If this variable is non-‘nil’, it specifies the initial execution
mode for Edebug when it is first activated. Possible values are
‘step’, ‘next’, ‘go’, ‘Go-nonstop’, ‘trace’, ‘Trace-fast’,
‘continue’, and ‘Continue-fast’.
The default value is ‘step’. This variable can be set
interactively with ‘C-x C-a C-m’ (‘edebug-set-initial-mode’).
Edebug Execution Modes.
-- User Option: edebug-trace
If this is non-‘nil’, trace each function entry and exit. Tracing
output is displayed in a buffer named ‘*edebug-trace*’, one
function entry or exit per line, indented by the recursion level.
Also see ‘edebug-tracing’, in Trace Buffer.
-- User Option: edebug-test-coverage
If non-‘nil’, Edebug tests coverage of all expressions debugged.
Coverage Testing.
-- User Option: edebug-continue-kbd-macro
If non-‘nil’, continue defining or executing any keyboard macro
that is executing outside of Edebug. Use this with caution since
it is not debugged. Edebug Execution Modes.
-- User Option: edebug-unwrap-results
If non-‘nil’, Edebug tries to remove any of its own instrumentation
when showing the results of expressions. This is relevant when
debugging macros where the results of expressions are themselves
instrumented expressions. As a very artificial example, suppose
that the example function ‘fac’ has been instrumented, and consider
a macro of the form:
(defmacro test () "Edebug example."
(if (symbol-function 'fac)
...))
If you instrument the ‘test’ macro and step through it, then by
default the result of the ‘symbol-function’ call has numerous
‘edebug-after’ and ‘edebug-before’ forms, which can make it
difficult to see the actual result. If ‘edebug-unwrap-results’ is
non-‘nil’, Edebug tries to remove these forms from the result.
-- User Option: edebug-on-error
Edebug binds ‘debug-on-error’ to this value, if ‘debug-on-error’
was previously ‘nil’. Trapping Errors.
-- User Option: edebug-on-quit
Edebug binds ‘debug-on-quit’ to this value, if ‘debug-on-quit’ was
previously ‘nil’. Trapping Errors.
If you change the values of ‘edebug-on-error’ or ‘edebug-on-quit’
while Edebug is active, their values won’t be used until the _next_ time
Edebug is invoked via a new command.
-- User Option: edebug-global-break-condition
If non-‘nil’, an expression to test for at every stop point. If
the result is non-‘nil’, then break. Errors are ignored.
Global Break Condition.