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