Add 2010 to copyright years.
[bpt/emacs.git] / doc / lispref / edebug.texi
CommitLineData
73804d4b 1@comment -*-texinfo-*-
969fe9b5 2@c This is part of the GNU Emacs Lisp Reference Manual.
b3d90e46 3@c Copyright (C) 1992, 1993, 1994, 1998, 1999, 2001, 2002, 2003, 2004,
114f9c96 4@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
969fe9b5 5@c See the file elisp.texi for copying conditions.
73804d4b 6
177c0ea7
JB
7@c This file can also be used by an independent Edebug User
8@c Manual in which case the Edebug node below should be used
73804d4b
RS
9@c with the following links to the Bugs section and to the top level:
10
11@c , Bugs and Todo List, Top, Top
12
1911e6e5 13@node Edebug, Syntax Errors, Debugger, Debugging
73804d4b 14@section Edebug
77bf576c 15@cindex Edebug debugging facility
73804d4b 16
622fa380 17 Edebug is a source-level debugger for Emacs Lisp programs, with which
73804d4b
RS
18you can:
19
20@itemize @bullet
21@item
22Step through evaluation, stopping before and after each expression.
23
24@item
25Set conditional or unconditional breakpoints.
26
27@item
28Stop when a specified condition is true (the global break event).
29
30@item
31Trace slow or fast, stopping briefly at each stop point, or
32at each breakpoint.
33
34@item
35Display expression results and evaluate expressions as if outside of
36Edebug.
37
177c0ea7 38@item
a9f0a989 39Automatically re-evaluate a list of expressions and
73804d4b
RS
40display their results each time Edebug updates the display.
41
42@item
622fa380 43Output trace information on function calls and returns.
73804d4b
RS
44
45@item
46Stop when an error occurs.
47
48@item
49Display a backtrace, omitting Edebug's own frames.
50
51@item
52Specify argument evaluation for macros and defining forms.
53
54@item
55Obtain rudimentary coverage testing and frequency counts.
56@end itemize
57
58The first three sections below should tell you enough about Edebug to
622fa380 59start using it.
73804d4b
RS
60
61@menu
62* Using Edebug:: Introduction to use of Edebug.
63* Instrumenting:: You must instrument your code
64 in order to debug it with Edebug.
65* Modes: Edebug Execution Modes. Execution modes, stopping more or less often.
66* Jumping:: Commands to jump to a specified place.
67* Misc: Edebug Misc. Miscellaneous commands.
c5f8bf2d 68* Breaks:: Setting breakpoints to make the program stop.
8241495d 69* Trapping Errors:: Trapping errors with Edebug.
73804d4b 70* Views: Edebug Views. Views inside and outside of Edebug.
8241495d 71* Eval: Edebug Eval. Evaluating expressions within Edebug.
73804d4b
RS
72* Eval List:: Expressions whose values are displayed
73 each time you enter Edebug.
74* Printing in Edebug:: Customization of printing.
75* Trace Buffer:: How to produce trace output in a buffer.
76* Coverage Testing:: How to test evaluation coverage.
77* The Outside Context:: Data that Edebug saves and restores.
c5f8bf2d 78* Edebug and Macros:: Specifying how to handle macro calls.
73804d4b
RS
79* Options: Edebug Options. Option variables for customizing Edebug.
80@end menu
81
82@node Using Edebug
83@subsection Using Edebug
84
85 To debug a Lisp program with Edebug, you must first @dfn{instrument}
86the Lisp code that you want to debug. A simple way to do this is to
87first move point into the definition of a function or macro and then do
88@kbd{C-u C-M-x} (@code{eval-defun} with a prefix argument). See
89@ref{Instrumenting}, for alternative ways to instrument code.
90
91 Once a function is instrumented, any call to the function activates
8241495d
RS
92Edebug. Depending on which Edebug execution mode you have selected,
93activating Edebug may stop execution and let you step through the
94function, or it may update the display and continue execution while
95checking for debugging commands. The default execution mode is step,
96which stops execution. @xref{Edebug Execution Modes}.
73804d4b
RS
97
98 Within Edebug, you normally view an Emacs buffer showing the source of
99the Lisp code you are debugging. This is referred to as the @dfn{source
2bdedac1 100code buffer}, and it is temporarily read-only.
73804d4b 101
2634c6e4 102 An arrow in the left fringe indicates the line where the function is
73804d4b
RS
103executing. Point initially shows where within the line the function is
104executing, but this ceases to be true if you move point yourself.
105
106 If you instrument the definition of @code{fac} (shown below) and then
8241495d
RS
107execute @code{(fac 3)}, here is what you would normally see. Point is
108at the open-parenthesis before @code{if}.
73804d4b
RS
109
110@example
111(defun fac (n)
112=>@point{}(if (< 0 n)
113 (* n (fac (1- n)))
114 1))
115@end example
116
117@cindex stop points
118The places within a function where Edebug can stop execution are called
119@dfn{stop points}. These occur both before and after each subexpression
177c0ea7 120that is a list, and also after each variable reference.
8241495d 121Here we use periods to show the stop points in the function
73804d4b
RS
122@code{fac}:
123
124@example
125(defun fac (n)
126 .(if .(< 0 n.).
b180eac2 127 .(* n. .(fac .(1- n.).).).
73804d4b
RS
128 1).)
129@end example
130
131The special commands of Edebug are available in the source code buffer
132in addition to the commands of Emacs Lisp mode. For example, you can
133type the Edebug command @key{SPC} to execute until the next stop point.
134If you type @key{SPC} once after entry to @code{fac}, here is the
135display you will see:
136
137@example
138(defun fac (n)
139=>(if @point{}(< 0 n)
140 (* n (fac (1- n)))
141 1))
142@end example
143
144When Edebug stops execution after an expression, it displays the
177c0ea7 145expression's value in the echo area.
73804d4b
RS
146
147Other frequently used commands are @kbd{b} to set a breakpoint at a stop
148point, @kbd{g} to execute until a breakpoint is reached, and @kbd{q} to
149exit Edebug and return to the top-level command loop. Type @kbd{?} to
150display a list of all Edebug commands.
151
152@node Instrumenting
153@subsection Instrumenting for Edebug
154
155 In order to use Edebug to debug Lisp code, you must first
156@dfn{instrument} the code. Instrumenting code inserts additional code
87b2d5ff 157into it, to invoke Edebug at the proper places.
73804d4b
RS
158
159@kindex C-M-x
160@findex eval-defun (Edebug)
2634c6e4
RS
161 When you invoke command @kbd{C-M-x} (@code{eval-defun}) with a
162prefix argument on a function definition, it instruments the
163definition before evaluating it. (This does not modify the source
164code itself.) If the variable @code{edebug-all-defs} is
165non-@code{nil}, that inverts the meaning of the prefix argument: in
166this case, @kbd{C-M-x} instruments the definition @emph{unless} it has
167a prefix argument. The default value of @code{edebug-all-defs} is
168@code{nil}. The command @kbd{M-x edebug-all-defs} toggles the value
169of the variable @code{edebug-all-defs}.
73804d4b 170
969fe9b5 171@findex eval-region @r{(Edebug)}
d8ca18c7 172@findex eval-buffer @r{(Edebug)}
969fe9b5 173@findex eval-current-buffer @r{(Edebug)}
73804d4b
RS
174 If @code{edebug-all-defs} is non-@code{nil}, then the commands
175@code{eval-region}, @code{eval-current-buffer}, and @code{eval-buffer}
176also instrument any definitions they evaluate. Similarly,
177@code{edebug-all-forms} controls whether @code{eval-region} should
178instrument @emph{any} form, even non-defining forms. This doesn't apply
179to loading or evaluations in the minibuffer. The command @kbd{M-x
180edebug-all-forms} toggles this option.
181
182@findex edebug-eval-top-level-form
969fe9b5 183 Another command, @kbd{M-x edebug-eval-top-level-form}, is available to
f9f59935
RS
184instrument any top-level form regardless of the values of
185@code{edebug-all-defs} and @code{edebug-all-forms}.
73804d4b 186
969fe9b5 187 While Edebug is active, the command @kbd{I}
73804d4b
RS
188(@code{edebug-instrument-callee}) instruments the definition of the
189function or macro called by the list form after point, if is not already
190instrumented. This is possible only if Edebug knows where to find the
622fa380 191source for that function; for this reason, after loading Edebug,
8241495d
RS
192@code{eval-region} records the position of every definition it
193evaluates, even if not instrumenting it. See also the @kbd{i} command
194(@pxref{Jumping}), which steps into the call after instrumenting the
195function.
73804d4b 196
a9f0a989
RS
197 Edebug knows how to instrument all the standard special forms,
198@code{interactive} forms with an expression argument, anonymous lambda
8241495d
RS
199expressions, and other defining forms. However, Edebug cannot determine
200on its own what a user-defined macro will do with the arguments of a
67c1390d 201macro call, so you must provide that information using Edebug
622fa380 202specifications; for details, @pxref{Edebug and Macros}.
73804d4b 203
969fe9b5
RS
204 When Edebug is about to instrument code for the first time in a
205session, it runs the hook @code{edebug-setup-hook}, then sets it to
8241495d 206@code{nil}. You can use this to load Edebug specifications
67c1390d 207associated with a package you are using, but only when you use Edebug.
969fe9b5
RS
208
209@findex eval-expression @r{(Edebug)}
a9f0a989 210 To remove instrumentation from a definition, simply re-evaluate its
73804d4b 211definition in a way that does not instrument. There are two ways of
87b2d5ff 212evaluating forms that never instrument them: from a file with
73804d4b 213@code{load}, and from the minibuffer with @code{eval-expression}
bfe721d1 214(@kbd{M-:}).
73804d4b
RS
215
216 If Edebug detects a syntax error while instrumenting, it leaves point
217at the erroneous code and signals an @code{invalid-read-syntax} error.
218
219 @xref{Edebug Eval}, for other evaluation functions available
220inside of Edebug.
221
222@node Edebug Execution Modes
223@subsection Edebug Execution Modes
224
225@cindex Edebug execution modes
226Edebug supports several execution modes for running the program you are
227debugging. We call these alternatives @dfn{Edebug execution modes}; do
87b2d5ff 228not confuse them with major or minor modes. The current Edebug execution mode
73804d4b
RS
229determines how far Edebug continues execution before stopping---whether
230it stops at each stop point, or continues to the next breakpoint, for
231example---and how much Edebug displays the progress of the evaluation
232before it stops.
233
234Normally, you specify the Edebug execution mode by typing a command to
235continue the program in a certain mode. Here is a table of these
8241495d 236commands; all except for @kbd{S} resume execution of the program, at
73804d4b
RS
237least for a certain distance.
238
239@table @kbd
240@item S
8241495d 241Stop: don't execute any more of the program, but wait for more
73804d4b
RS
242Edebug commands (@code{edebug-stop}).
243
244@item @key{SPC}
245Step: stop at the next stop point encountered (@code{edebug-step-mode}).
246
247@item n
248Next: stop at the next stop point encountered after an expression
249(@code{edebug-next-mode}). Also see @code{edebug-forward-sexp} in
c5f8bf2d 250@ref{Jumping}.
73804d4b
RS
251
252@item t
89f6de49
RS
253Trace: pause (normally one second) at each Edebug stop point
254(@code{edebug-trace-mode}).
73804d4b
RS
255
256@item T
257Rapid trace: update the display at each stop point, but don't actually
258pause (@code{edebug-Trace-fast-mode}).
259
260@item g
261Go: run until the next breakpoint (@code{edebug-go-mode}). @xref{Breakpoints}.
262
263@item c
264Continue: pause one second at each breakpoint, and then continue
265(@code{edebug-continue-mode}).
266
267@item C
268Rapid continue: move point to each breakpoint, but don't pause
269(@code{edebug-Continue-fast-mode}).
270
271@item G
272Go non-stop: ignore breakpoints (@code{edebug-Go-nonstop-mode}). You
273can still stop the program by typing @kbd{S}, or any editing command.
274@end table
275
276In general, the execution modes earlier in the above list run the
87b2d5ff 277program more slowly or stop sooner than the modes later in the list.
73804d4b
RS
278
279While executing or tracing, you can interrupt the execution by typing
280any Edebug command. Edebug stops the program at the next stop point and
87b2d5ff
RS
281then executes the command you typed. For example, typing @kbd{t} during
282execution switches to trace mode at the next stop point. You can use
283@kbd{S} to stop execution without doing anything else.
73804d4b
RS
284
285If your function happens to read input, a character you type intending
286to interrupt execution may be read by the function instead. You can
287avoid such unintended results by paying attention to when your program
288wants input.
289
290@cindex keyboard macros (Edebug)
291Keyboard macros containing the commands in this section do not
292completely work: exiting from Edebug, to resume the program, loses track
293of the keyboard macro. This is not easy to fix. Also, defining or
294executing a keyboard macro outside of Edebug does not affect commands
8241495d 295inside Edebug. This is usually an advantage. See also the
622fa380 296@code{edebug-continue-kbd-macro} option in @ref{Edebug Options}.
73804d4b 297
2634c6e4 298When you enter a new Edebug level, the initial execution mode comes
622fa380
GM
299from the value of the variable @code{edebug-initial-mode}
300(@pxref{Edebug Options}). By default, this specifies step mode. Note
2634c6e4
RS
301that you may reenter the same Edebug level several times if, for
302example, an instrumented function is called several times from one
303command.
73804d4b 304
89f6de49
RS
305@defopt edebug-sit-for-seconds
306This option specifies how many seconds to wait between execution steps
622fa380 307in trace mode or continue mode. The default is 1 second.
b52a26fb 308@end defopt
73804d4b
RS
309
310@node Jumping
311@subsection Jumping
312
313 The commands described in this section execute until they reach a
314specified location. All except @kbd{i} make a temporary breakpoint to
315establish the place to stop, then switch to go mode. Any other
316breakpoint reached before the intended stop point will also stop
317execution. @xref{Breakpoints}, for the details on breakpoints.
318
319 These commands may fail to work as expected in case of nonlocal exit,
8241495d
RS
320as that can bypass the temporary breakpoint where you expected the
321program to stop.
73804d4b
RS
322
323@table @kbd
324@item h
325Proceed to the stop point near where point is (@code{edebug-goto-here}).
326
327@item f
342fd6cd 328Run the program for one expression
73804d4b
RS
329(@code{edebug-forward-sexp}).
330
331@item o
622fa380 332Run the program until the end of the containing sexp (@code{edebug-step-out}).
73804d4b
RS
333
334@item i
335Step into the function or macro called by the form after point.
336@end table
337
c5f8bf2d
LT
338The @kbd{h} command proceeds to the stop point at or after the current
339location of point, using a temporary breakpoint.
73804d4b
RS
340
341The @kbd{f} command runs the program forward over one expression. More
342precisely, it sets a temporary breakpoint at the position that
622fa380
GM
343@code{forward-sexp} would reach, then executes in go mode so that
344the program will stop at breakpoints.
73804d4b
RS
345
346With a prefix argument @var{n}, the temporary breakpoint is placed
347@var{n} sexps beyond point. If the containing list ends before @var{n}
348more elements, then the place to stop is after the containing
349expression.
350
622fa380
GM
351You must check that the position @code{forward-sexp} finds is a place
352that the program will really get to. In @code{cond}, for example,
353this may not be true.
73804d4b 354
8241495d
RS
355For flexibility, the @kbd{f} command does @code{forward-sexp} starting
356at point, rather than at the stop point. If you want to execute one
622fa380
GM
357expression @emph{from the current stop point}, first type @kbd{w}
358(@code{edebug-where}) to move point there, and then type @kbd{f}.
73804d4b
RS
359
360The @kbd{o} command continues ``out of'' an expression. It places a
361temporary breakpoint at the end of the sexp containing point. If the
87b2d5ff
RS
362containing sexp is a function definition itself, @kbd{o} continues until
363just before the last sexp in the definition. If that is where you are
364now, it returns from the function and then stops. In other words, this
73804d4b
RS
365command does not exit the currently executing function unless you are
366positioned after the last sexp.
367
368The @kbd{i} command steps into the function or macro called by the list
87b2d5ff
RS
369form after point, and stops at its first stop point. Note that the form
370need not be the one about to be evaluated. But if the form is a
371function call about to be evaluated, remember to use this command before
372any of the arguments are evaluated, since otherwise it will be too late.
73804d4b
RS
373
374The @kbd{i} command instruments the function or macro it's supposed to
375step into, if it isn't instrumented already. This is convenient, but keep
376in mind that the function or macro remains instrumented unless you explicitly
377arrange to deinstrument it.
378
379@node Edebug Misc
380@subsection Miscellaneous Edebug Commands
381
382 Some miscellaneous Edebug commands are described here.
383
384@table @kbd
385@item ?
386Display the help message for Edebug (@code{edebug-help}).
387
388@item C-]
389Abort one level back to the previous command level
390(@code{abort-recursive-edit}).
391
392@item q
393Return to the top level editor command loop (@code{top-level}). This
394exits all recursive editing levels, including all levels of Edebug
395activity. However, instrumented code protected with
396@code{unwind-protect} or @code{condition-case} forms may resume
397debugging.
398
399@item Q
8241495d 400Like @kbd{q}, but don't stop even for protected code
622fa380 401(@code{edebug-top-level-nonstop}).
73804d4b
RS
402
403@item r
404Redisplay the most recently known expression result in the echo area
405(@code{edebug-previous-result}).
406
407@item d
408Display a backtrace, excluding Edebug's own functions for clarity
409(@code{edebug-backtrace}).
410
411You cannot use debugger commands in the backtrace buffer in Edebug as
412you would in the standard debugger.
413
414The backtrace buffer is killed automatically when you continue
415execution.
416@end table
417
8241495d
RS
418You can invoke commands from Edebug that activate Edebug again
419recursively. Whenever Edebug is active, you can quit to the top level
420with @kbd{q} or abort one recursive edit level with @kbd{C-]}. You can
421display a backtrace of all the pending evaluations with @kbd{d}.
73804d4b 422
c5f8bf2d
LT
423@node Breaks
424@subsection Breaks
73804d4b 425
8241495d 426Edebug's step mode stops execution when the next stop point is reached.
73804d4b
RS
427There are three other ways to stop Edebug execution once it has started:
428breakpoints, the global break condition, and source breakpoints.
429
c5f8bf2d
LT
430@menu
431* Breakpoints:: Breakpoints at stop points.
432* Global Break Condition:: Breaking on an event.
433* Source Breakpoints:: Embedding breakpoints in source code.
434@end menu
435
436@node Breakpoints
77bf576c 437@subsubsection Edebug Breakpoints
c5f8bf2d 438
77bf576c 439@cindex breakpoints (Edebug)
73804d4b 440While using Edebug, you can specify @dfn{breakpoints} in the program you
8241495d 441are testing: these are places where execution should stop. You can set a
73804d4b
RS
442breakpoint at any stop point, as defined in @ref{Using Edebug}. For
443setting and unsetting breakpoints, the stop point that is affected is
444the first one at or after point in the source code buffer. Here are the
445Edebug commands for breakpoints:
446
447@table @kbd
448@item b
449Set a breakpoint at the stop point at or after point
450(@code{edebug-set-breakpoint}). If you use a prefix argument, the
8241495d
RS
451breakpoint is temporary---it turns off the first time it stops the
452program.
73804d4b
RS
453
454@item u
177c0ea7 455Unset the breakpoint (if any) at the stop point at or after
73804d4b
RS
456point (@code{edebug-unset-breakpoint}).
457
458@item x @var{condition} @key{RET}
459Set a conditional breakpoint which stops the program only if
342fd6cd
RS
460evaluating @var{condition} produces a non-@code{nil} value
461(@code{edebug-set-conditional-breakpoint}). With a prefix argument,
462the breakpoint is temporary.
73804d4b
RS
463
464@item B
9e2b495b 465Move point to the next breakpoint in the current definition
73804d4b
RS
466(@code{edebug-next-breakpoint}).
467@end table
468
469While in Edebug, you can set a breakpoint with @kbd{b} and unset one
470with @kbd{u}. First move point to the Edebug stop point of your choice,
471then type @kbd{b} or @kbd{u} to set or unset a breakpoint there.
472Unsetting a breakpoint where none has been set has no effect.
473
8241495d
RS
474Re-evaluating or reinstrumenting a definition removes all of its
475previous breakpoints.
73804d4b
RS
476
477A @dfn{conditional breakpoint} tests a condition each time the program
478gets there. Any errors that occur as a result of evaluating the
479condition are ignored, as if the result were @code{nil}. To set a
480conditional breakpoint, use @kbd{x}, and specify the condition
481expression in the minibuffer. Setting a conditional breakpoint at a
482stop point that has a previously established conditional breakpoint puts
483the previous condition expression in the minibuffer so you can edit it.
484
485You can make a conditional or unconditional breakpoint
969fe9b5 486@dfn{temporary} by using a prefix argument with the command to set the
73804d4b
RS
487breakpoint. When a temporary breakpoint stops the program, it is
488automatically unset.
489
8241495d 490Edebug always stops or pauses at a breakpoint, except when the Edebug
73804d4b
RS
491mode is Go-nonstop. In that mode, it ignores breakpoints entirely.
492
493To find out where your breakpoints are, use the @kbd{B} command, which
87b2d5ff
RS
494moves point to the next breakpoint following point, within the same
495function, or to the first breakpoint if there are no following
496breakpoints. This command does not continue execution---it just moves
497point in the buffer.
73804d4b 498
73804d4b
RS
499@node Global Break Condition
500@subsubsection Global Break Condition
501
502@cindex stopping on events
503@cindex global break condition
504 A @dfn{global break condition} stops execution when a specified
505condition is satisfied, no matter where that may occur. Edebug
8241495d 506evaluates the global break condition at every stop point; if it
73804d4b
RS
507evaluates to a non-@code{nil} value, then execution stops or pauses
508depending on the execution mode, as if a breakpoint had been hit. If
509evaluating the condition gets an error, execution does not stop.
510
511@findex edebug-set-global-break-condition
9e2b495b
RS
512 The condition expression is stored in
513@code{edebug-global-break-condition}. You can specify a new expression
c5f8bf2d
LT
514using the @kbd{X} command from the source code buffer while Edebug is
515active, or using @kbd{C-x X X} from any buffer at any time, as long as
516Edebug is loaded (@code{edebug-set-global-break-condition}).
73804d4b
RS
517
518 The global break condition is the simplest way to find where in your
519code some event occurs, but it makes code run much more slowly. So you
520should reset the condition to @code{nil} when not using it.
521
522@node Source Breakpoints
523@subsubsection Source Breakpoints
524
525@findex edebug
526@cindex source breakpoints
527 All breakpoints in a definition are forgotten each time you
8241495d
RS
528reinstrument it. If you wish to make a breakpoint that won't be
529forgotten, you can write a @dfn{source breakpoint}, which is simply a
530call to the function @code{edebug} in your source code. You can, of
531course, make such a call conditional. For example, in the @code{fac}
532function, you can insert the first line as shown below, to stop when the
533argument reaches zero:
73804d4b
RS
534
535@example
536(defun fac (n)
537 (if (= n 0) (edebug))
538 (if (< 0 n)
539 (* n (fac (1- n)))
540 1))
541@end example
542
969fe9b5 543 When the @code{fac} definition is instrumented and the function is
73804d4b
RS
544called, the call to @code{edebug} acts as a breakpoint. Depending on
545the execution mode, Edebug stops or pauses there.
546
969fe9b5 547 If no instrumented code is being executed when @code{edebug} is called,
73804d4b
RS
548that function calls @code{debug}.
549@c This may not be a good idea anymore.
550
551@node Trapping Errors
552@subsection Trapping Errors
553
969fe9b5
RS
554 Emacs normally displays an error message when an error is signaled and
555not handled with @code{condition-case}. While Edebug is active and
556executing instrumented code, it normally responds to all unhandled
557errors. You can customize this with the options @code{edebug-on-error}
558and @code{edebug-on-quit}; see @ref{Edebug Options}.
73804d4b 559
969fe9b5 560 When Edebug responds to an error, it shows the last stop point
73804d4b 561encountered before the error. This may be the location of a call to a
8241495d 562function which was not instrumented, and within which the error actually
73804d4b
RS
563occurred. For an unbound variable error, the last known stop point
564might be quite distant from the offending variable reference. In that
8241495d 565case, you might want to display a full backtrace (@pxref{Edebug Misc}).
73804d4b 566
87b2d5ff 567@c Edebug should be changed for the following: -- dan
969fe9b5 568 If you change @code{debug-on-error} or @code{debug-on-quit} while
73804d4b
RS
569Edebug is active, these changes will be forgotten when Edebug becomes
570inactive. Furthermore, during Edebug's recursive edit, these variables
571are bound to the values they had outside of Edebug.
572
73804d4b
RS
573@node Edebug Views
574@subsection Edebug Views
575
969fe9b5 576 These Edebug commands let you view aspects of the buffer and window
a9f0a989 577status as they were before entry to Edebug. The outside window
87b2d5ff
RS
578configuration is the collection of windows and contents that were in
579effect outside of Edebug.
73804d4b
RS
580
581@table @kbd
582@item v
342fd6cd
RS
583Switch to viewing the outside window configuration
584(@code{edebug-view-outside}). Type @kbd{C-x X w} to return to Edebug.
73804d4b
RS
585
586@item p
c5f8bf2d
LT
587Temporarily display the outside current buffer with point at its
588outside position (@code{edebug-bounce-point}), pausing for one second
589before returning to Edebug. With a prefix argument @var{n}, pause for
590@var{n} seconds instead.
73804d4b
RS
591
592@item w
1911e6e5
RS
593Move point back to the current stop point in the source code buffer
594(@code{edebug-where}).
595
596If you use this command in a different window displaying the same
597buffer, that window will be used instead to display the current
598definition in the future.
73804d4b
RS
599
600@item W
87b2d5ff
RS
601@c Its function is not simply to forget the saved configuration -- dan
602Toggle whether Edebug saves and restores the outside window
603configuration (@code{edebug-toggle-save-windows}).
604
605With a prefix argument, @code{W} only toggles saving and restoring of
606the selected window. To specify a window that is not displaying the
607source code buffer, you must use @kbd{C-x X W} from the global keymap.
73804d4b
RS
608@end table
609
969fe9b5 610 You can view the outside window configuration with @kbd{v} or just
73804d4b 611bounce to the point in the current buffer with @kbd{p}, even if
c5f8bf2d
LT
612it is not normally displayed.
613
614 After moving point, you may wish to jump back to the stop point.
615You can do that with @kbd{w} from a source code buffer. You can jump
616back to the stop point in the source code buffer from any buffer using
617@kbd{C-x X w}.
73804d4b 618
969fe9b5 619 Each time you use @kbd{W} to turn saving @emph{off}, Edebug forgets the
87b2d5ff
RS
620saved outside window configuration---so that even if you turn saving
621back @emph{on}, the current window configuration remains unchanged when
622you next exit Edebug (by continuing the program). However, the
623automatic redisplay of @samp{*edebug*} and @samp{*edebug-trace*} may
624conflict with the buffers you wish to see unless you have enough windows
625open.
73804d4b
RS
626
627@node Edebug Eval
628@subsection Evaluation
629
8241495d
RS
630 While within Edebug, you can evaluate expressions ``as if'' Edebug
631were not running. Edebug tries to be invisible to the expression's
73804d4b 632evaluation and printing. Evaluation of expressions that cause side
8241495d
RS
633effects will work as expected, except for changes to data that Edebug
634explicitly saves and restores. @xref{The Outside Context}, for details
635on this process.
73804d4b
RS
636
637@table @kbd
638@item e @var{exp} @key{RET}
639Evaluate expression @var{exp} in the context outside of Edebug
640(@code{edebug-eval-expression}). That is, Edebug tries to minimize its
641interference with the evaluation.
642
bfe721d1 643@item M-: @var{exp} @key{RET}
622fa380
GM
644Evaluate expression @var{exp} in the context of Edebug itself
645(@code{eval-expression}).
73804d4b
RS
646
647@item C-x C-e
648Evaluate the expression before point, in the context outside of Edebug
649(@code{edebug-eval-last-sexp}).
650@end table
651
652@cindex lexical binding (Edebug)
969fe9b5 653 Edebug supports evaluation of expressions containing references to
73804d4b 654lexically bound symbols created by the following constructs in
622fa380
GM
655@file{cl.el}: @code{lexical-let}, @code{macrolet}, and
656@code{symbol-macrolet}.
73804d4b 657
73804d4b
RS
658@node Eval List
659@subsection Evaluation List Buffer
660
969fe9b5 661 You can use the @dfn{evaluation list buffer}, called @samp{*edebug*}, to
73804d4b
RS
662evaluate expressions interactively. You can also set up the
663@dfn{evaluation list} of expressions to be evaluated automatically each
664time Edebug updates the display.
665
666@table @kbd
667@item E
668Switch to the evaluation list buffer @samp{*edebug*}
669(@code{edebug-visit-eval-list}).
670@end table
671
969fe9b5 672 In the @samp{*edebug*} buffer you can use the commands of Lisp
73804d4b
RS
673Interaction mode (@pxref{Lisp Interaction,,, emacs, The GNU Emacs
674Manual}) as well as these special commands:
675
676@table @kbd
969fe9b5 677@item C-j
73804d4b
RS
678Evaluate the expression before point, in the outside context, and insert
679the value in the buffer (@code{edebug-eval-print-last-sexp}).
680
681@item C-x C-e
682Evaluate the expression before point, in the context outside of Edebug
683(@code{edebug-eval-last-sexp}).
684
685@item C-c C-u
87b2d5ff 686Build a new evaluation list from the contents of the buffer
73804d4b
RS
687(@code{edebug-update-eval-list}).
688
689@item C-c C-d
690Delete the evaluation list group that point is in
691(@code{edebug-delete-eval-item}).
692
693@item C-c C-w
694Switch back to the source code buffer at the current stop point
695(@code{edebug-where}).
696@end table
697
969fe9b5
RS
698 You can evaluate expressions in the evaluation list window with
699@kbd{C-j} or @kbd{C-x C-e}, just as you would in @samp{*scratch*};
73804d4b
RS
700but they are evaluated in the context outside of Edebug.
701
969fe9b5 702 The expressions you enter interactively (and their results) are lost
73804d4b 703when you continue execution; but you can set up an @dfn{evaluation list}
177c0ea7 704consisting of expressions to be evaluated each time execution stops.
73804d4b
RS
705
706@cindex evaluation list group
969fe9b5 707 To do this, write one or more @dfn{evaluation list groups} in the
73804d4b
RS
708evaluation list buffer. An evaluation list group consists of one or
709more Lisp expressions. Groups are separated by comment lines.
710
969fe9b5 711 The command @kbd{C-c C-u} (@code{edebug-update-eval-list}) rebuilds the
73804d4b 712evaluation list, scanning the buffer and using the first expression of
87b2d5ff
RS
713each group. (The idea is that the second expression of the group is the
714value previously computed and displayed.)
73804d4b 715
969fe9b5 716 Each entry to Edebug redisplays the evaluation list by inserting each
87b2d5ff
RS
717expression in the buffer, followed by its current value. It also
718inserts comment lines so that each expression becomes its own group.
719Thus, if you type @kbd{C-c C-u} again without changing the buffer text,
720the evaluation list is effectively unchanged.
73804d4b 721
622fa380
GM
722 If an error occurs during an evaluation from the evaluation list,
723the error message is displayed in a string as if it were the result.
724Therefore, expressions using variables that are not currently valid do
725not interrupt your debugging.
73804d4b 726
969fe9b5 727 Here is an example of what the evaluation list window looks like after
73804d4b
RS
728several expressions have been added to it:
729
730@smallexample
731(current-buffer)
732#<buffer *scratch*>
733;---------------------------------------------------------------
734(selected-window)
735#<window 16 on *scratch*>
736;---------------------------------------------------------------
737(point)
738196
739;---------------------------------------------------------------
740bad-var
741"Symbol's value as variable is void: bad-var"
742;---------------------------------------------------------------
743(recursion-depth)
7440
745;---------------------------------------------------------------
746this-command
747eval-last-sexp
748;---------------------------------------------------------------
749@end smallexample
750
751To delete a group, move point into it and type @kbd{C-c C-d}, or simply
752delete the text for the group and update the evaluation list with
753@kbd{C-c C-u}. To add a new expression to the evaluation list, insert
8241495d
RS
754the expression at a suitable place, insert a new comment line, then type
755@kbd{C-c C-u}. You need not insert dashes in the comment line---its
756contents don't matter.
73804d4b
RS
757
758After selecting @samp{*edebug*}, you can return to the source code
759buffer with @kbd{C-c C-w}. The @samp{*edebug*} buffer is killed when
760you continue execution, and recreated next time it is needed.
761
73804d4b
RS
762@node Printing in Edebug
763@subsection Printing in Edebug
764
765@cindex printing (Edebug)
766@cindex printing circular structures
767@pindex cust-print
768 If an expression in your program produces a value containing circular
769list structure, you may get an error when Edebug attempts to print it.
770
73804d4b
RS
771 One way to cope with circular structure is to set @code{print-length}
772or @code{print-level} to truncate the printing. Edebug does this for
622fa380
GM
773you; it binds @code{print-length} and @code{print-level} to the values
774of the variables @code{edebug-print-length} and
775@code{edebug-print-level} (so long as they have non-@code{nil}
776values). @xref{Output Variables}.
73804d4b 777
969fe9b5 778@defopt edebug-print-length
8241495d
RS
779If non-@code{nil}, Edebug binds @code{print-length} to this value while
780printing results. The default value is @code{50}.
969fe9b5
RS
781@end defopt
782
177c0ea7 783@defopt edebug-print-level
8241495d
RS
784If non-@code{nil}, Edebug binds @code{print-level} to this value while
785printing results. The default value is @code{50}.
969fe9b5
RS
786@end defopt
787
73804d4b 788 You can also print circular structures and structures that share
8241495d
RS
789elements more informatively by binding @code{print-circle}
790to a non-@code{nil} value.
73804d4b
RS
791
792 Here is an example of code that creates a circular structure:
793
794@example
795(setq a '(x y))
a9f0a989 796(setcar a a)
73804d4b
RS
797@end example
798
799@noindent
800Custom printing prints this as @samp{Result: #1=(#1# y)}. The
801@samp{#1=} notation labels the structure that follows it with the label
a9f0a989 802@samp{1}, and the @samp{#1#} notation references the previously labeled
73804d4b
RS
803structure. This notation is used for any shared elements of lists or
804vectors.
805
177c0ea7 806@defopt edebug-print-circle
8241495d 807If non-@code{nil}, Edebug binds @code{print-circle} to this value while
011caae1 808printing results. The default value is @code{t}.
969fe9b5
RS
809@end defopt
810
73804d4b
RS
811 Other programs can also use custom printing; see @file{cust-print.el}
812for details.
813
814@node Trace Buffer
815@subsection Trace Buffer
816@cindex trace buffer
817
87b2d5ff 818 Edebug can record an execution trace, storing it in a buffer named
73804d4b
RS
819@samp{*edebug-trace*}. This is a log of function calls and returns,
820showing the function names and their arguments and values. To enable
821trace recording, set @code{edebug-trace} to a non-@code{nil} value.
822
823 Making a trace buffer is not the same thing as using trace execution
824mode (@pxref{Edebug Execution Modes}).
825
826 When trace recording is enabled, each function entry and exit adds
8241495d
RS
827lines to the trace buffer. A function entry record consists of
828@samp{::::@{}, followed by the function name and argument values. A
829function exit record consists of @samp{::::@}}, followed by the function
73804d4b
RS
830name and result of the function.
831
832 The number of @samp{:}s in an entry shows its recursion depth. You
833can use the braces in the trace buffer to find the matching beginning or
834end of function calls.
835
836@findex edebug-print-trace-before
837@findex edebug-print-trace-after
838 You can customize trace recording for function entry and exit by
839redefining the functions @code{edebug-print-trace-before} and
840@code{edebug-print-trace-after}.
841
842@defmac edebug-tracing string body@dots{}
843This macro requests additional trace information around the execution
844of the @var{body} forms. The argument @var{string} specifies text
c5f8bf2d
LT
845to put in the trace buffer, after the @samp{@{} or @samp{@}}. All
846the arguments are evaluated, and @code{edebug-tracing} returns the
847value of the last form in @var{body}.
73804d4b
RS
848@end defmac
849
850@defun edebug-trace format-string &rest format-args
851This function inserts text in the trace buffer. It computes the text
852with @code{(apply 'format @var{format-string} @var{format-args})}.
87b2d5ff 853It also appends a newline to separate entries.
73804d4b
RS
854@end defun
855
1911e6e5
RS
856 @code{edebug-tracing} and @code{edebug-trace} insert lines in the
857trace buffer whenever they are called, even if Edebug is not active.
858Adding text to the trace buffer also scrolls its window to show the last
859lines inserted.
73804d4b 860
73804d4b
RS
861@node Coverage Testing
862@subsection Coverage Testing
863
77bf576c 864@cindex coverage testing (Edebug)
73804d4b
RS
865@cindex frequency counts
866@cindex performance analysis
77bf576c 867 Edebug provides rudimentary coverage testing and display of execution
1911e6e5
RS
868frequency.
869
870 Coverage testing works by comparing the result of each expression with
871the previous result; each form in the program is considered ``covered''
872if it has returned two different values since you began testing coverage
873in the current Emacs session. Thus, to do coverage testing on your
874program, execute it under various conditions and note whether it behaves
875correctly; Edebug will tell you when you have tried enough different
876conditions that each form has returned two different values.
877
878 Coverage testing makes execution slower, so it is only done if
ebc6903b 879@code{edebug-test-coverage} is non-@code{nil}. Frequency counting is
622fa380 880performed for all executions of an instrumented function, even if the
ebc6903b
RS
881execution mode is Go-nonstop, and regardless of whether coverage testing
882is enabled.
1911e6e5 883
89f6de49
RS
884@kindex C-x X =
885@findex edebug-temp-display-freq-count
886 Use @kbd{C-x X =} (@code{edebug-display-freq-count}) to display both
887the coverage information and the frequency counts for a definition.
888Just @kbd{=} (@code{edebug-temp-display-freq-count}) displays the same
889information temporarily, only until you type another key.
73804d4b
RS
890
891@deffn Command edebug-display-freq-count
892This command displays the frequency count data for each line of the
893current definition.
894
622fa380
GM
895It inserts frequency counts as comment lines after each line of code.
896You can undo all insertions with one @code{undo} command. The counts
897appear under the @samp{(} before an expression or the @samp{)} after
898an expression, or on the last character of a variable. To simplify
899the display, a count is not shown if it is equal to the count of an
900earlier expression on the same line.
73804d4b
RS
901
902The character @samp{=} following the count for an expression says that
a9f0a989 903the expression has returned the same value each time it was evaluated.
1911e6e5 904In other words, it is not yet ``covered'' for coverage testing purposes.
73804d4b
RS
905
906To clear the frequency count and coverage data for a definition,
a9f0a989 907simply reinstrument it with @code{eval-defun}.
73804d4b
RS
908@end deffn
909
910For example, after evaluating @code{(fac 5)} with a source
911breakpoint, and setting @code{edebug-test-coverage} to @code{t}, when
912the breakpoint is reached, the frequency data looks like this:
913
914@example
915(defun fac (n)
916 (if (= n 0) (edebug))
011caae1 917;#6 1 = =5
73804d4b 918 (if (< 0 n)
177c0ea7 919;#5 =
73804d4b 920 (* n (fac (1- n)))
177c0ea7 921;# 5 0
73804d4b 922 1))
177c0ea7 923;# 0
73804d4b
RS
924@end example
925
87b2d5ff
RS
926The comment lines show that @code{fac} was called 6 times. The
927first @code{if} statement returned 5 times with the same result each
73804d4b 928time; the same is true of the condition on the second @code{if}.
87b2d5ff 929The recursive call of @code{fac} did not return at all.
73804d4b
RS
930
931
932@node The Outside Context
933@subsection The Outside Context
934
935Edebug tries to be transparent to the program you are debugging, but it
936does not succeed completely. Edebug also tries to be transparent when
937you evaluate expressions with @kbd{e} or with the evaluation list
938buffer, by temporarily restoring the outside context. This section
939explains precisely what context Edebug restores, and how Edebug fails to
940be completely transparent.
941
73804d4b
RS
942@menu
943* Checking Whether to Stop:: When Edebug decides what to do.
944* Edebug Display Update:: When Edebug updates the display.
945* Edebug Recursive Edit:: When Edebug stops execution.
946@end menu
947
948@node Checking Whether to Stop
949@subsubsection Checking Whether to Stop
950
87b2d5ff
RS
951Whenever Edebug is entered, it needs to save and restore certain data
952before even deciding whether to make trace information or stop the
953program.
73804d4b
RS
954
955@itemize @bullet
177c0ea7 956@item
73804d4b 957@code{max-lisp-eval-depth} and @code{max-specpdl-size} are both
622fa380
GM
958increased to reduce Edebug's impact on the stack. You could, however,
959still run out of stack space when using Edebug.
73804d4b 960
177c0ea7 961@item
73804d4b 962The state of keyboard macro execution is saved and restored. While
473671bd
RS
963Edebug is active, @code{executing-kbd-macro} is bound to @code{nil}
964unless @code{edebug-continue-kbd-macro} is non-@code{nil}.
73804d4b
RS
965@end itemize
966
967
968@node Edebug Display Update
969@subsubsection Edebug Display Update
970
87b2d5ff
RS
971@c This paragraph is not filled, because LaLiberte's conversion script
972@c needs an xref to be on just one line.
73804d4b 973When Edebug needs to display something (e.g., in trace mode), it saves
177c0ea7 974the current window configuration from ``outside'' Edebug
87b2d5ff
RS
975(@pxref{Window Configurations}). When you exit Edebug (by continuing
976the program), it restores the previous window configuration.
73804d4b
RS
977
978Emacs redisplays only when it pauses. Usually, when you continue
8241495d
RS
979execution, the program re-enters Edebug at a breakpoint or after
980stepping, without pausing or reading input in between. In such cases,
73804d4b 981Emacs never gets a chance to redisplay the ``outside'' configuration.
8241495d
RS
982Consequently, what you see is the same window configuration as the last
983time Edebug was active, with no interruption.
73804d4b
RS
984
985Entry to Edebug for displaying something also saves and restores the
8241495d
RS
986following data (though some of them are deliberately not restored if an
987error or quit signal occurs).
73804d4b
RS
988
989@itemize @bullet
177c0ea7 990@item
73804d4b
RS
991@cindex current buffer point and mark (Edebug)
992Which buffer is current, and the positions of point and the mark in the
993current buffer, are saved and restored.
994
177c0ea7 995@item
73804d4b
RS
996@cindex window configuration (Edebug)
997The outside window configuration is saved and restored if
c5f8bf2d 998@code{edebug-save-windows} is non-@code{nil} (@pxref{Edebug Options}).
73804d4b
RS
999
1000The window configuration is not restored on error or quit, but the
1001outside selected window @emph{is} reselected even on error or quit in
1002case a @code{save-excursion} is active. If the value of
1003@code{edebug-save-windows} is a list, only the listed windows are saved
1004and restored.
1005
1006The window start and horizontal scrolling of the source code buffer are
1007not restored, however, so that the display remains coherent within Edebug.
1008
1009@item
73804d4b
RS
1010The value of point in each displayed buffer is saved and restored if
1011@code{edebug-save-displayed-buffer-points} is non-@code{nil}.
1012
1013@item
1014The variables @code{overlay-arrow-position} and
622fa380 1015@code{overlay-arrow-string} are saved and restored, so you can safely
73804d4b
RS
1016invoke Edebug from the recursive edit elsewhere in the same buffer.
1017
177c0ea7 1018@item
73804d4b
RS
1019@code{cursor-in-echo-area} is locally bound to @code{nil} so that
1020the cursor shows up in the window.
1021@end itemize
1022
1023@node Edebug Recursive Edit
1024@subsubsection Edebug Recursive Edit
1025
1026When Edebug is entered and actually reads commands from the user, it
1027saves (and later restores) these additional data:
1028
1029@itemize @bullet
1030@item
1031The current match data. @xref{Match Data}.
1032
1033@item
342fd6cd 1034The variables @code{last-command}, @code{this-command},
342fd6cd
RS
1035@code{last-input-event}, @code{last-command-event},
1036@code{last-event-frame}, @code{last-nonmenu-event}, and
1037@code{track-mouse}. Commands used within Edebug do not affect these
1038variables outside of Edebug.
73804d4b 1039
94da4eb4
RS
1040Executing commands within Edebug can change the key sequence that
1041would be returned by @code{this-command-keys}, and there is no way to
1042reset the key sequence from Lisp.
73804d4b 1043
87b2d5ff
RS
1044Edebug cannot save and restore the value of
1045@code{unread-command-events}. Entering Edebug while this variable has a
1046nontrivial value can interfere with execution of the program you are
1047debugging.
1048
73804d4b
RS
1049@item
1050Complex commands executed while in Edebug are added to the variable
1051@code{command-history}. In rare cases this can alter execution.
1052
1053@item
1054Within Edebug, the recursion depth appears one deeper than the recursion
1055depth outside Edebug. This is not true of the automatically updated
1056evaluation list window.
1057
1058@item
1059@code{standard-output} and @code{standard-input} are bound to @code{nil}
1060by the @code{recursive-edit}, but Edebug temporarily restores them during
1061evaluations.
1062
177c0ea7 1063@item
73804d4b
RS
1064The state of keyboard macro definition is saved and restored. While
1065Edebug is active, @code{defining-kbd-macro} is bound to
1066@code{edebug-continue-kbd-macro}.
1067@end itemize
1068
c5f8bf2d
LT
1069@node Edebug and Macros
1070@subsection Edebug and Macros
1071
1072To make Edebug properly instrument expressions that call macros, some
1073extra care is needed. This subsection explains the details.
1074
1075@menu
1076* Instrumenting Macro Calls:: The basic problem.
1077* Specification List:: How to specify complex patterns of evaluation.
1078* Backtracking:: What Edebug does when matching fails.
1079* Specification Examples:: To help understand specifications.
1080@end menu
1081
73804d4b 1082@node Instrumenting Macro Calls
c5f8bf2d 1083@subsubsection Instrumenting Macro Calls
73804d4b 1084
969fe9b5
RS
1085 When Edebug instruments an expression that calls a Lisp macro, it needs
1086additional information about the macro to do the job properly. This is
1087because there is no a-priori way to tell which subexpressions of the
1088macro call are forms to be evaluated. (Evaluation may occur explicitly
1089in the macro body, or when the resulting expansion is evaluated, or any
1090time later.)
1091
f9350c5c
RS
1092 Therefore, you must define an Edebug specification for each macro
1093that Edebug will encounter, to explain the format of calls to that
a7679889 1094macro. To do this, add a @code{debug} declaration to the macro
f9350c5c
RS
1095definition. Here is a simple example that shows the specification for
1096the @code{for} example macro (@pxref{Argument Evaluation}).
1097
342fd6cd 1098@smallexample
f9350c5c
RS
1099(defmacro for (var from init to final do &rest body)
1100 "Execute a simple \"for\" loop.
1101For example, (for i from 1 to 10 do (print i))."
af5a6df7 1102 (declare (debug (symbolp "from" form "to" form "do" &rest form)))
f9350c5c 1103 ...)
342fd6cd 1104@end smallexample
f9350c5c 1105
89f6de49 1106 The Edebug specification says which parts of a call to the macro are
622fa380 1107forms to be evaluated. For simple macros, the specification
a756468d
RS
1108often looks very similar to the formal argument list of the macro
1109definition, but specifications are much more general than macro
1110arguments. @xref{Defining Macros}, for more explanation of
40d2bb40 1111the @code{declare} form.
a756468d
RS
1112
1113 You can also define an edebug specification for a macro separately
f9350c5c 1114from the macro definition with @code{def-edebug-spec}. Adding
a7679889
LK
1115@code{debug} declarations is preferred, and more convenient, for macro
1116definitions in Lisp, but @code{def-edebug-spec} makes it possible to
1117define Edebug specifications for special forms implemented in C.
73804d4b
RS
1118
1119@deffn Macro def-edebug-spec macro specification
1120Specify which expressions of a call to macro @var{macro} are forms to be
f9350c5c 1121evaluated. @var{specification} should be the edebug specification.
c5f8bf2d 1122Neither argument is evaluated.
73804d4b 1123
969fe9b5 1124The @var{macro} argument can actually be any symbol, not just a macro
73804d4b
RS
1125name.
1126@end deffn
1127
73804d4b
RS
1128Here is a table of the possibilities for @var{specification} and how each
1129directs processing of arguments.
1130
ec221d13 1131@table @asis
73804d4b
RS
1132@item @code{t}
1133All arguments are instrumented for evaluation.
1134
1135@item @code{0}
1136None of the arguments is instrumented.
1137
1138@item a symbol
622fa380 1139The symbol must have an Edebug specification, which is used instead.
73804d4b 1140This indirection is repeated until another kind of specification is
a9f0a989 1141found. This allows you to inherit the specification from another macro.
73804d4b
RS
1142
1143@item a list
1144The elements of the list describe the types of the arguments of a
1145calling form. The possible elements of a specification list are
1146described in the following sections.
1147@end table
1148
c5f8bf2d
LT
1149If a macro has no Edebug specification, neither through a @code{debug}
1150declaration nor through a @code{def-edebug-spec} call, the variable
622fa380
GM
1151@code{edebug-eval-macro-args} comes into play.
1152
1153@defopt edebug-eval-macro-args
1154This controls the way Edebug treats macro arguments with no explicit
1155Edebug specification. If it is @code{nil} (the default), none of the
1156arguments is instrumented for evaluation. Otherwise, all arguments
1157are instrumented.
1158@end defopt
73804d4b
RS
1159
1160@node Specification List
1161@subsubsection Specification List
1162
1163@cindex Edebug specification list
1164A @dfn{specification list} is required for an Edebug specification if
1165some arguments of a macro call are evaluated while others are not. Some
1166elements in a specification list match one or more arguments, but others
1167modify the processing of all following elements. The latter, called
1168@dfn{specification keywords}, are symbols beginning with @samp{&} (such
1169as @code{&optional}).
1170
1171A specification list may contain sublists which match arguments that are
1172themselves lists, or it may contain vectors used for grouping. Sublists
1173and groups thus subdivide the specification list into a hierarchy of
969fe9b5 1174levels. Specification keywords apply only to the remainder of the
73804d4b
RS
1175sublist or group they are contained in.
1176
1177When a specification list involves alternatives or repetition, matching
622fa380
GM
1178it against an actual macro call may require backtracking. For more
1179details, @pxref{Backtracking}.
73804d4b
RS
1180
1181Edebug specifications provide the power of regular expression matching,
1182plus some context-free grammar constructs: the matching of sublists with
1183balanced parentheses, recursive processing of forms, and recursion via
1184indirect specifications.
1185
1186Here's a table of the possible elements of a specification list, with
67c1390d
LT
1187their meanings (see @ref{Specification Examples}, for the referenced
1188examples):
73804d4b
RS
1189
1190@table @code
1191@item sexp
1911e6e5 1192A single unevaluated Lisp object, which is not instrumented.
a9f0a989 1193@c an "expression" is not necessarily intended for evaluation.
73804d4b
RS
1194
1195@item form
1196A single evaluated expression, which is instrumented.
1197
1198@item place
622fa380
GM
1199@c I can't see that this index entry is useful without any explanation.
1200@c @findex edebug-unwrap
73804d4b
RS
1201A place to store a value, as in the Common Lisp @code{setf} construct.
1202
1203@item body
1204Short for @code{&rest form}. See @code{&rest} below.
1205
1206@item function-form
1207A function form: either a quoted function symbol, a quoted lambda
1208expression, or a form (that should evaluate to a function symbol or
1209lambda expression). This is useful when an argument that's a lambda
1210expression might be quoted with @code{quote} rather than
1211@code{function}, since it instruments the body of the lambda expression
1212either way.
1213
1214@item lambda-expr
1215A lambda expression with no quoting.
1216
1217@item &optional
89f6de49 1218@c @kindex &optional @r{(Edebug)}
73804d4b 1219All following elements in the specification list are optional; as soon
177c0ea7 1220as one does not match, Edebug stops matching at this level.
73804d4b
RS
1221
1222To make just a few elements optional followed by non-optional elements,
1223use @code{[&optional @var{specs}@dots{}]}. To specify that several
1224elements must all match or none, use @code{&optional
67c1390d 1225[@var{specs}@dots{}]}. See the @code{defun} example.
73804d4b
RS
1226
1227@item &rest
89f6de49 1228@c @kindex &rest @r{(Edebug)}
73804d4b 1229All following elements in the specification list are repeated zero or
ebc6903b
RS
1230more times. In the last repetition, however, it is not a problem if the
1231expression runs out before matching all of the elements of the
1232specification list.
73804d4b
RS
1233
1234To repeat only a few elements, use @code{[&rest @var{specs}@dots{}]}.
1235To specify several elements that must all match on every repetition, use
1236@code{&rest [@var{specs}@dots{}]}.
1237
1238@item &or
89f6de49 1239@c @kindex &or @r{(Edebug)}
73804d4b
RS
1240Each of the following elements in the specification list is an
1241alternative. One of the alternatives must match, or the @code{&or}
1242specification fails.
1243
1244Each list element following @code{&or} is a single alternative. To
1245group two or more list elements as a single alternative, enclose them in
1246@code{[@dots{}]}.
1247
1248@item &not
89f6de49 1249@c @kindex &not @r{(Edebug)}
73804d4b
RS
1250Each of the following elements is matched as alternatives as if by using
1251@code{&or}, but if any of them match, the specification fails. If none
1252of them match, nothing is matched, but the @code{&not} specification
1253succeeds.
1254
177c0ea7 1255@item &define
89f6de49 1256@c @kindex &define @r{(Edebug)}
73804d4b 1257Indicates that the specification is for a defining form. The defining
a9f0a989 1258form itself is not instrumented (that is, Edebug does not stop before and
73804d4b
RS
1259after the defining form), but forms inside it typically will be
1260instrumented. The @code{&define} keyword should be the first element in
1261a list specification.
1262
1263@item nil
1264This is successful when there are no more arguments to match at the
1265current argument list level; otherwise it fails. See sublist
67c1390d 1266specifications and the backquote example.
73804d4b
RS
1267
1268@item gate
1269@cindex preventing backtracking
1270No argument is matched but backtracking through the gate is disabled
1271while matching the remainder of the specifications at this level. This
1272is primarily used to generate more specific syntax error messages. See
67c1390d 1273@ref{Backtracking}, for more details. Also see the @code{let} example.
73804d4b
RS
1274
1275@item @var{other-symbol}
1276@cindex indirect specifications
1277Any other symbol in a specification list may be a predicate or an
1278indirect specification.
1279
1280If the symbol has an Edebug specification, this @dfn{indirect
1281specification} should be either a list specification that is used in
1282place of the symbol, or a function that is called to process the
1283arguments. The specification may be defined with @code{def-edebug-spec}
622fa380 1284just as for macros. See the @code{defun} example.
73804d4b
RS
1285
1286Otherwise, the symbol should be a predicate. The predicate is called
1287with the argument and the specification fails if the predicate returns
622fa380 1288@code{nil}, and the argument is not instrumented.
73804d4b 1289
73804d4b
RS
1290Some suitable predicates include @code{symbolp}, @code{integerp},
1291@code{stringp}, @code{vectorp}, and @code{atom}.
73804d4b
RS
1292
1293@item [@var{elements}@dots{}]
1294@cindex [@dots{}] (Edebug)
1295A vector of elements groups the elements into a single @dfn{group
1296specification}. Its meaning has nothing to do with vectors.
1297
1298@item "@var{string}"
1299The argument should be a symbol named @var{string}. This specification
1300is equivalent to the quoted symbol, @code{'@var{symbol}}, where the name
1301of @var{symbol} is the @var{string}, but the string form is preferred.
1302
73804d4b
RS
1303@item (vector @var{elements}@dots{})
1304The argument should be a vector whose elements must match the
67c1390d 1305@var{elements} in the specification. See the backquote example.
73804d4b
RS
1306
1307@item (@var{elements}@dots{})
1308Any other list is a @dfn{sublist specification} and the argument must be
1309a list whose elements match the specification @var{elements}.
1310
1311@cindex dotted lists (Edebug)
1312A sublist specification may be a dotted list and the corresponding list
1313argument may then be a dotted list. Alternatively, the last @sc{cdr} of a
1314dotted list specification may be another sublist specification (via a
a9f0a989 1315grouping or an indirect specification, e.g., @code{(spec . [(more
73804d4b
RS
1316specs@dots{})])}) whose elements match the non-dotted list arguments.
1317This is useful in recursive specifications such as in the backquote
67c1390d 1318example. Also see the description of a @code{nil} specification
73804d4b
RS
1319above for terminating such recursion.
1320
87b2d5ff
RS
1321Note that a sublist specification written as @code{(specs . nil)}
1322is equivalent to @code{(specs)}, and @code{(specs .
1323(sublist-elements@dots{}))} is equivalent to @code{(specs
73804d4b
RS
1324sublist-elements@dots{})}.
1325@end table
1326
1327@c Need to document extensions with &symbol and :symbol
1328
969fe9b5 1329Here is a list of additional specifications that may appear only after
67c1390d 1330@code{&define}. See the @code{defun} example.
73804d4b
RS
1331
1332@table @code
1333@item name
177c0ea7 1334The argument, a symbol, is the name of the defining form.
73804d4b
RS
1335
1336A defining form is not required to have a name field; and it may have
1337multiple name fields.
1338
1339@item :name
1340This construct does not actually match an argument. The element
1341following @code{:name} should be a symbol; it is used as an additional
1342name component for the definition. You can use this to add a unique,
1343static component to the name of the definition. It may be used more
1344than once.
1345
1346@item arg
1347The argument, a symbol, is the name of an argument of the defining form.
a9f0a989 1348However, lambda-list keywords (symbols starting with @samp{&})
87b2d5ff 1349are not allowed.
73804d4b
RS
1350
1351@item lambda-list
1352@cindex lambda-list (Edebug)
1353This matches a lambda list---the argument list of a lambda expression.
73804d4b
RS
1354
1355@item def-body
1356The argument is the body of code in a definition. This is like
1357@code{body}, described above, but a definition body must be instrumented
1358with a different Edebug call that looks up information associated with
1359the definition. Use @code{def-body} for the highest level list of forms
1360within the definition.
1361
1362@item def-form
1363The argument is a single, highest-level form in a definition. This is
622fa380 1364like @code{def-body}, except it is used to match a single form rather than
73804d4b
RS
1365a list of forms. As a special case, @code{def-form} also means that
1366tracing information is not output when the form is executed. See the
67c1390d 1367@code{interactive} example.
73804d4b
RS
1368@end table
1369
1370@node Backtracking
969fe9b5 1371@subsubsection Backtracking in Specifications
73804d4b
RS
1372
1373@cindex backtracking
1374@cindex syntax error (Edebug)
1375If a specification fails to match at some point, this does not
1376necessarily mean a syntax error will be signaled; instead,
1377@dfn{backtracking} will take place until all alternatives have been
1378exhausted. Eventually every element of the argument list must be
1379matched by some element in the specification, and every required element
1380in the specification must match some argument.
177c0ea7 1381
a9f0a989 1382When a syntax error is detected, it might not be reported until much
622fa380 1383later, after higher-level alternatives have been exhausted, and with the
a9f0a989
RS
1384point positioned further from the real error. But if backtracking is
1385disabled when an error occurs, it can be reported immediately. Note
1386that backtracking is also reenabled automatically in several situations;
622fa380
GM
1387when a new alternative is established by @code{&optional},
1388@code{&rest}, or @code{&or}, or at the start of processing a sublist,
1389group, or indirect specification. The effect of enabling or disabling
1390backtracking is limited to the remainder of the level currently being
1391processed and lower levels.
a9f0a989
RS
1392
1393Backtracking is disabled while matching any of the
1394form specifications (that is, @code{form}, @code{body}, @code{def-form}, and
73804d4b
RS
1395@code{def-body}). These specifications will match any form so any error
1396must be in the form itself rather than at a higher level.
1397
a9f0a989 1398Backtracking is also disabled after successfully matching a quoted
73804d4b 1399symbol or string specification, since this usually indicates a
a9f0a989 1400recognized construct. But if you have a set of alternative constructs that
73804d4b
RS
1401all begin with the same symbol, you can usually work around this
1402constraint by factoring the symbol out of the alternatives, e.g.,
1403@code{["foo" &or [first case] [second case] ...]}.
1404
3e7274ae 1405Most needs are satisfied by these two ways that backtracking is
a9f0a989
RS
1406automatically disabled, but occasionally it is useful to explicitly
1407disable backtracking by using the @code{gate} specification. This is
1408useful when you know that no higher alternatives could apply. See the
1409example of the @code{let} specification.
73804d4b 1410
73804d4b
RS
1411@node Specification Examples
1412@subsubsection Specification Examples
1413
1414It may be easier to understand Edebug specifications by studying
1415the examples provided here.
1416
1417A @code{let} special form has a sequence of bindings and a body. Each
1418of the bindings is either a symbol or a sublist with a symbol and
a9f0a989 1419optional expression. In the specification below, notice the @code{gate}
73804d4b
RS
1420inside of the sublist to prevent backtracking once a sublist is found.
1421
622fa380 1422@c FIXME? The actual definition in edebug.el does not have a gate.
73804d4b
RS
1423@example
1424(def-edebug-spec let
1425 ((&rest
1426 &or symbolp (gate symbolp &optional form))
1427 body))
1428@end example
1429
622fa380
GM
1430Edebug uses the following specifications for @code{defun} and the
1431associated argument list and @code{interactive} specifications. It is
1432necessary to handle interactive forms specially since an expression
1433argument is actually evaluated outside of the function body. (The
1434specification for @code{defmacro} is very similar to that for
1435@code{defun}, but allows for the @code{declare} statement.)
73804d4b 1436
87b2d5ff 1437@smallexample
177c0ea7
JB
1438(def-edebug-spec defun
1439 (&define name lambda-list
87b2d5ff 1440 [&optional stringp] ; @r{Match the doc string, if present.}
73804d4b
RS
1441 [&optional ("interactive" interactive)]
1442 def-body))
1443
1444(def-edebug-spec lambda-list
1445 (([&rest arg]
1446 [&optional ["&optional" arg &rest arg]]
1447 &optional ["&rest" arg]
1448 )))
1449
1450(def-edebug-spec interactive
1451 (&optional &or stringp def-form)) ; @r{Notice: @code{def-form}}
87b2d5ff 1452@end smallexample
73804d4b
RS
1453
1454The specification for backquote below illustrates how to match
1455dotted lists and use @code{nil} to terminate recursion. It also
1456illustrates how components of a vector may be matched. (The actual
622fa380
GM
1457specification defined by Edebug is a little different, and does not
1458support dotted lists because doing so causes very deep recursion that
1459could fail.)
73804d4b 1460
87b2d5ff 1461@smallexample
622fa380 1462(def-edebug-spec \` (backquote-form)) ; @r{Alias just for clarity.}
73804d4b
RS
1463
1464(def-edebug-spec backquote-form
1465 (&or ([&or "," ",@@"] &or ("quote" backquote-form) form)
1466 (backquote-form . [&or nil backquote-form])
1467 (vector &rest backquote-form)
1468 sexp))
87b2d5ff 1469@end smallexample
73804d4b
RS
1470
1471
1472@node Edebug Options
1473@subsection Edebug Options
1474
1475 These options affect the behavior of Edebug:
622fa380
GM
1476@c Previously defopt'd:
1477@c edebug-sit-for-seconds, edebug-print-length, edebug-print-level
1478@c edebug-print-circle, edebug-eval-macro-args
73804d4b
RS
1479
1480@defopt edebug-setup-hook
1481Functions to call before Edebug is used. Each time it is set to a new
1482value, Edebug will call those functions once and then
1483@code{edebug-setup-hook} is reset to @code{nil}. You could use this to
1484load up Edebug specifications associated with a package you are using
1485but only when you also use Edebug.
1486@xref{Instrumenting}.
1487@end defopt
1488
1489@defopt edebug-all-defs
1490If this is non-@code{nil}, normal evaluation of defining forms such as
1491@code{defun} and @code{defmacro} instruments them for Edebug. This
87b2d5ff
RS
1492applies to @code{eval-defun}, @code{eval-region}, @code{eval-buffer},
1493and @code{eval-current-buffer}.
1494
1495Use the command @kbd{M-x edebug-all-defs} to toggle the value of this
1496option. @xref{Instrumenting}.
73804d4b
RS
1497@end defopt
1498
1499@defopt edebug-all-forms
87b2d5ff
RS
1500If this is non-@code{nil}, the commands @code{eval-defun},
1501@code{eval-region}, @code{eval-buffer}, and @code{eval-current-buffer}
1502instrument all forms, even those that don't define anything.
1503This doesn't apply to loading or evaluations in the minibuffer.
73804d4b
RS
1504
1505Use the command @kbd{M-x edebug-all-forms} to toggle the value of this
87b2d5ff 1506option. @xref{Instrumenting}.
73804d4b
RS
1507@end defopt
1508
1509@defopt edebug-save-windows
1510If this is non-@code{nil}, Edebug saves and restores the window
1511configuration. That takes some time, so if your program does not care
1512what happens to the window configurations, it is better to set this
1513variable to @code{nil}.
1514
1515If the value is a list, only the listed windows are saved and
177c0ea7 1516restored.
73804d4b
RS
1517
1518You can use the @kbd{W} command in Edebug to change this variable
1519interactively. @xref{Edebug Display Update}.
1520@end defopt
1521
1522@defopt edebug-save-displayed-buffer-points
87b2d5ff
RS
1523If this is non-@code{nil}, Edebug saves and restores point in all
1524displayed buffers.
73804d4b
RS
1525
1526Saving and restoring point in other buffers is necessary if you are
622fa380 1527debugging code that changes the point of a buffer that is displayed in
73804d4b 1528a non-selected window. If Edebug or the user then selects the window,
87b2d5ff 1529point in that buffer will move to the window's value of point.
73804d4b
RS
1530
1531Saving and restoring point in all buffers is expensive, since it
1532requires selecting each window twice, so enable this only if you need
1533it. @xref{Edebug Display Update}.
1534@end defopt
1535
1536@defopt edebug-initial-mode
1537If this variable is non-@code{nil}, it specifies the initial execution
1538mode for Edebug when it is first activated. Possible values are
1539@code{step}, @code{next}, @code{go}, @code{Go-nonstop}, @code{trace},
1540@code{Trace-fast}, @code{continue}, and @code{Continue-fast}.
1541
177c0ea7 1542The default value is @code{step}.
73804d4b
RS
1543@xref{Edebug Execution Modes}.
1544@end defopt
1545
1546@defopt edebug-trace
42995636 1547If this is non-@code{nil}, trace each function entry and exit.
73804d4b 1548Tracing output is displayed in a buffer named @samp{*edebug-trace*}, one
177c0ea7 1549function entry or exit per line, indented by the recursion level.
73804d4b 1550
a9f0a989 1551Also see @code{edebug-tracing}, in @ref{Trace Buffer}.
73804d4b
RS
1552@end defopt
1553
177c0ea7 1554@defopt edebug-test-coverage
73804d4b 1555If non-@code{nil}, Edebug tests coverage of all expressions debugged.
73804d4b
RS
1556@xref{Coverage Testing}.
1557@end defopt
1558
177c0ea7 1559@defopt edebug-continue-kbd-macro
73804d4b
RS
1560If non-@code{nil}, continue defining or executing any keyboard macro
1561that is executing outside of Edebug. Use this with caution since it is not
1562debugged.
1563@xref{Edebug Execution Modes}.
1564@end defopt
1565
622fa380
GM
1566@c FIXME edebug-unwrap-results
1567
73804d4b
RS
1568@defopt edebug-on-error
1569Edebug binds @code{debug-on-error} to this value, if
1570@code{debug-on-error} was previously @code{nil}. @xref{Trapping
1571Errors}.
1572@end defopt
1573
1574@defopt edebug-on-quit
1575Edebug binds @code{debug-on-quit} to this value, if
1576@code{debug-on-quit} was previously @code{nil}. @xref{Trapping
1577Errors}.
1578@end defopt
1579
1580 If you change the values of @code{edebug-on-error} or
1581@code{edebug-on-quit} while Edebug is active, their values won't be used
87b2d5ff
RS
1582until the @emph{next} time Edebug is invoked via a new command.
1583@c Not necessarily a deeper command level.
1584@c A new command is not precisely true, but that is close enough -- dan
73804d4b
RS
1585
1586@defopt edebug-global-break-condition
9a8dc0d3
RS
1587If non-@code{nil}, an expression to test for at every stop point. If
1588the result is non-@code{nil}, then break. Errors are ignored.
73804d4b
RS
1589@xref{Global Break Condition}.
1590@end defopt
ab5796a9
MB
1591
1592@ignore
1593 arch-tag: 74842db8-019f-4818-b5a4-b2de878e57fd
1594@end ignore