; * CONTRIBUTE (Generating ChangeLog entries): Drop duplicate word.
[emacs.git] / doc / lispref / debugging.texi
blob45db6406d32f7f615ad753770711b6c8bae6714b
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990-1994, 1998-1999, 2001-2017 Free Software
4 @c Foundation, Inc.
5 @c See the file elisp.texi for copying conditions.
6 @node Debugging
7 @chapter Debugging Lisp Programs
8 @cindex debugging lisp programs
10   There are several ways to find and investigate problems in an Emacs
11 Lisp program.
13 @itemize @bullet
14 @item
15 If a problem occurs when you run the program, you can use the built-in
16 Emacs Lisp debugger to suspend the Lisp evaluator, and examine and/or
17 alter its internal state.
19 @item
20 You can use Edebug, a source-level debugger for Emacs Lisp.
22 @item
23 If a syntactic problem is preventing Lisp from even reading the
24 program, you can locate it using Lisp editing commands.
26 @item
27 You can look at the error and warning messages produced by the byte
28 compiler when it compiles the program.  @xref{Compiler Errors}.
30 @item
31 You can use the Testcover package to perform coverage testing on the
32 program.
34 @item
35 You can use the ERT package to write regression tests for the program.
36 @xref{Top,the ERT manual,, ert, ERT: Emacs Lisp Regression Testing}.
38 @item
39 You can profile the program to get hints about how to make it more efficient.
40 @end itemize
42   Other useful tools for debugging input and output problems are the
43 dribble file (@pxref{Terminal Input}) and the @code{open-termscript}
44 function (@pxref{Terminal Output}).
46 @menu
47 * Debugger::            A debugger for the Emacs Lisp evaluator.
48 * Edebug::              A source-level Emacs Lisp debugger.
49 * Syntax Errors::       How to find syntax errors.
50 * Test Coverage::       Ensuring you have tested all branches in your code.
51 * Profiling::           Measuring the resources that your code uses.
52 @end menu
54 @node Debugger
55 @section The Lisp Debugger
56 @cindex debugger for Emacs Lisp
57 @cindex Lisp debugger
58 @cindex break
60   The ordinary @dfn{Lisp debugger} provides the ability to suspend
61 evaluation of a form.  While evaluation is suspended (a state that is
62 commonly known as a @dfn{break}), you may examine the run time stack,
63 examine the values of local or global variables, or change those values.
64 Since a break is a recursive edit, all the usual editing facilities of
65 Emacs are available; you can even run programs that will enter the
66 debugger recursively.  @xref{Recursive Editing}.
68 @menu
69 * Error Debugging::       Entering the debugger when an error happens.
70 * Infinite Loops::        Stopping and debugging a program that doesn't exit.
71 * Function Debugging::    Entering it when a certain function is called.
72 * Explicit Debug::        Entering it at a certain point in the program.
73 * Using Debugger::        What the debugger does; what you see while in it.
74 * Debugger Commands::     Commands used while in the debugger.
75 * Invoking the Debugger:: How to call the function @code{debug}.
76 * Internals of Debugger:: Subroutines of the debugger, and global variables.
77 @end menu
79 @node Error Debugging
80 @subsection Entering the Debugger on an Error
81 @cindex error debugging
82 @cindex debugging errors
84   The most important time to enter the debugger is when a Lisp error
85 happens.  This allows you to investigate the immediate causes of the
86 error.
88   However, entry to the debugger is not a normal consequence of an
89 error.  Many commands signal Lisp errors when invoked inappropriately,
90 and during ordinary editing it would be very inconvenient to enter the
91 debugger each time this happens.  So if you want errors to enter the
92 debugger, set the variable @code{debug-on-error} to non-@code{nil}.
93 (The command @code{toggle-debug-on-error} provides an easy way to do
94 this.)
96 @defopt debug-on-error
97 This variable determines whether the debugger is called when an error
98 is signaled and not handled.  If @code{debug-on-error} is @code{t},
99 all kinds of errors call the debugger, except those listed in
100 @code{debug-ignored-errors} (see below).  If it is @code{nil}, none
101 call the debugger.
103 The value can also be a list of error conditions (@pxref{Signaling
104 Errors}).  Then the debugger is called only for error conditions in
105 this list (except those also listed in @code{debug-ignored-errors}).
106 For example, if you set @code{debug-on-error} to the list
107 @code{(void-variable)}, the debugger is only called for errors about a
108 variable that has no value.
110 Note that @code{eval-expression-debug-on-error} overrides this
111 variable in some cases; see below.
113 When this variable is non-@code{nil}, Emacs does not create an error
114 handler around process filter functions and sentinels.  Therefore,
115 errors in these functions also invoke the debugger.  @xref{Processes}.
116 @end defopt
118 @defopt debug-ignored-errors
119 This variable specifies errors which should not enter the debugger,
120 regardless of the value of @code{debug-on-error}.  Its value is a list
121 of error condition symbols and/or regular expressions.  If the error
122 has any of those condition symbols, or if the error message matches
123 any of the regular expressions, then that error does not enter the
124 debugger.
126 The normal value of this variable includes @code{user-error}, as well
127 as several errors that happen often during editing but rarely result
128 from bugs in Lisp programs.  However, ``rarely'' is not ``never''; if
129 your program fails with an error that matches this list, you may try
130 changing this list to debug the error.  The easiest way is usually to
131 set @code{debug-ignored-errors} to @code{nil}.
132 @end defopt
134 @defopt eval-expression-debug-on-error
135 If this variable has a non-@code{nil} value (the default), running the
136 command @code{eval-expression} causes @code{debug-on-error} to be
137 temporarily bound to to @code{t}.  @xref{Lisp Eval,, Evaluating
138 Emacs-Lisp Expressions, emacs, The GNU Emacs Manual}.
140 If @code{eval-expression-debug-on-error} is @code{nil}, then the value
141 of @code{debug-on-error} is not changed during @code{eval-expression}.
142 @end defopt
144 @defopt debug-on-signal
145 Normally, errors caught by @code{condition-case} never invoke the
146 debugger.  The @code{condition-case} gets a chance to handle the error
147 before the debugger gets a chance.
149 If you change @code{debug-on-signal} to a non-@code{nil} value, the
150 debugger gets the first chance at every error, regardless of the
151 presence of @code{condition-case}.  (To invoke the debugger, the error
152 must still fulfill the criteria specified by @code{debug-on-error} and
153 @code{debug-ignored-errors}.)
155 @cindex emacsclient, getting a backtrace
156 @cindex backtrace from emacsclient's @option{--eval}
157 For example, setting this variable is useful to get a backtrace from
158 code evaluated by emacsclient's @option{--eval} option.  If Lisp code
159 evaluated by emacsclient signals an error while this variable is
160 non-@code{nil}, the backtrace will popup in the running Emacs.
162 @strong{Warning:} Setting this variable to non-@code{nil} may have
163 annoying effects.  Various parts of Emacs catch errors in the normal
164 course of affairs, and you may not even realize that errors happen
165 there.  If you need to debug code wrapped in @code{condition-case},
166 consider using @code{condition-case-unless-debug} (@pxref{Handling
167 Errors}).
168 @end defopt
170 @defopt debug-on-event
171 If you set @code{debug-on-event} to a special event (@pxref{Special
172 Events}), Emacs will try to enter the debugger as soon as it receives
173 this event, bypassing @code{special-event-map}.  At present, the only
174 supported values correspond to the signals @code{SIGUSR1} and
175 @code{SIGUSR2} (this is the default).  This can be helpful when
176 @code{inhibit-quit} is set and Emacs is not otherwise responding.
177 @end defopt
179 @cindex message, finding what causes a particular message
180 @defvar debug-on-message
181 If you set @code{debug-on-message} to a regular expression,
182 Emacs will enter the debugger if it displays a matching message in the
183 echo area.  For example, this can be useful when trying to find the
184 cause of a particular message.
185 @end defvar
187   To debug an error that happens during loading of the init
188 file, use the option @samp{--debug-init}.  This binds
189 @code{debug-on-error} to @code{t} while loading the init file, and
190 bypasses the @code{condition-case} which normally catches errors in the
191 init file.
193 @node Infinite Loops
194 @subsection Debugging Infinite Loops
195 @cindex infinite loops
196 @cindex loops, infinite
197 @cindex quitting from infinite loop
198 @cindex stopping an infinite loop
200   When a program loops infinitely and fails to return, your first
201 problem is to stop the loop.  On most operating systems, you can do
202 this with @kbd{C-g}, which causes a @dfn{quit}.  @xref{Quitting}.
204   Ordinary quitting gives no information about why the program was
205 looping.  To get more information, you can set the variable
206 @code{debug-on-quit} to non-@code{nil}.  Once you have the debugger
207 running in the middle of the infinite loop, you can proceed from the
208 debugger using the stepping commands.  If you step through the entire
209 loop, you may get enough information to solve the problem.
211   Quitting with @kbd{C-g} is not considered an error, and
212 @code{debug-on-error} has no effect on the handling of @kbd{C-g}.
213 Likewise, @code{debug-on-quit} has no effect on errors.
215 @defopt debug-on-quit
216 This variable determines whether the debugger is called when
217 @code{quit} is signaled and not handled.  If @code{debug-on-quit} is
218 non-@code{nil}, then the debugger is called whenever you quit (that
219 is, type @kbd{C-g}).  If @code{debug-on-quit} is @code{nil} (the
220 default), then the debugger is not called when you quit.
221 @end defopt
223 @node Function Debugging
224 @subsection Entering the Debugger on a Function Call
225 @cindex function call debugging
226 @cindex debugging specific functions
228   To investigate a problem that happens in the middle of a program, one
229 useful technique is to enter the debugger whenever a certain function is
230 called.  You can do this to the function in which the problem occurs,
231 and then step through the function, or you can do this to a function
232 called shortly before the problem, step quickly over the call to that
233 function, and then step through its caller.
235 @deffn Command debug-on-entry function-name
236 This function requests @var{function-name} to invoke the debugger each
237 time it is called.
239 Any function or macro defined as Lisp code may be set to break on
240 entry, regardless of whether it is interpreted code or compiled code.
241 If the function is a command, it will enter the debugger when called
242 from Lisp and when called interactively (after the reading of the
243 arguments).  You can also set debug-on-entry for primitive functions
244 (i.e., those written in C) this way, but it only takes effect when the
245 primitive is called from Lisp code.  Debug-on-entry is not allowed for
246 special forms.
248 When @code{debug-on-entry} is called interactively, it prompts for
249 @var{function-name} in the minibuffer.  If the function is already set
250 up to invoke the debugger on entry, @code{debug-on-entry} does nothing.
251 @code{debug-on-entry} always returns @var{function-name}.
253 Here's an example to illustrate use of this function:
255 @example
256 @group
257 (defun fact (n)
258   (if (zerop n) 1
259       (* n (fact (1- n)))))
260      @result{} fact
261 @end group
262 @group
263 (debug-on-entry 'fact)
264      @result{} fact
265 @end group
266 @group
267 (fact 3)
268 @end group
270 @group
271 ------ Buffer: *Backtrace* ------
272 Debugger entered--entering a function:
273 * fact(3)
274   eval((fact 3))
275   eval-last-sexp-1(nil)
276   eval-last-sexp(nil)
277   call-interactively(eval-last-sexp)
278 ------ Buffer: *Backtrace* ------
279 @end group
281 @end example
282 @end deffn
284 @deffn Command cancel-debug-on-entry &optional function-name
285 This function undoes the effect of @code{debug-on-entry} on
286 @var{function-name}.  When called interactively, it prompts for
287 @var{function-name} in the minibuffer.  If @var{function-name} is
288 omitted or @code{nil}, it cancels break-on-entry for all functions.
289 Calling @code{cancel-debug-on-entry} does nothing to a function which is
290 not currently set up to break on entry.
291 @end deffn
293 @node Explicit Debug
294 @subsection Explicit Entry to the Debugger
295 @cindex debugger, explicit entry
296 @cindex force entry to debugger
298   You can cause the debugger to be called at a certain point in your
299 program by writing the expression @code{(debug)} at that point.  To do
300 this, visit the source file, insert the text @samp{(debug)} at the
301 proper place, and type @kbd{C-M-x} (@code{eval-defun}, a Lisp mode key
302 binding).  @strong{Warning:} if you do this for temporary debugging
303 purposes, be sure to undo this insertion before you save the file!
305   The place where you insert @samp{(debug)} must be a place where an
306 additional form can be evaluated and its value ignored.  (If the value
307 of @code{(debug)} isn't ignored, it will alter the execution of the
308 program!)  The most common suitable places are inside a @code{progn} or
309 an implicit @code{progn} (@pxref{Sequencing}).
311   If you don't know exactly where in the source code you want to put
312 the debug statement, but you want to display a backtrace when a
313 certain message is displayed, you can set @code{debug-on-message} to a
314 regular expression matching the desired message.
316 @node Using Debugger
317 @subsection Using the Debugger
319   When the debugger is entered, it displays the previously selected
320 buffer in one window and a buffer named @file{*Backtrace*} in another
321 window.  The backtrace buffer contains one line for each level of Lisp
322 function execution currently going on.  At the beginning of this buffer
323 is a message describing the reason that the debugger was invoked (such
324 as the error message and associated data, if it was invoked due to an
325 error).
327 @vindex debugger-bury-or-kill
328   The backtrace buffer is read-only and uses a special major mode,
329 Debugger mode, in which letters are defined as debugger commands.  The
330 usual Emacs editing commands are available; thus, you can switch windows
331 to examine the buffer that was being edited at the time of the error,
332 switch buffers, visit files, or do any other sort of editing.  However,
333 the debugger is a recursive editing level (@pxref{Recursive Editing})
334 and it is wise to go back to the backtrace buffer and exit the debugger
335 (with the @kbd{q} command) when you are finished with it.  Exiting
336 the debugger gets out of the recursive edit and buries the backtrace
337 buffer.  (You can customize what the @kbd{q} command does with the
338 backtrace buffer by setting the variable @code{debugger-bury-or-kill}.
339 For example, set it to @code{kill} if you prefer to kill the buffer
340 rather than bury it.  Consult the variable's documentation for more
341 possibilities.)
343   When the debugger has been entered, the @code{debug-on-error}
344 variable is temporarily set according to
345 @code{eval-expression-debug-on-error}.  If the latter variable is
346 non-@code{nil}, @code{debug-on-error} will temporarily be set to
347 @code{t}.  This means that any further errors that occur while doing a
348 debugging session will (by default) trigger another backtrace.  If
349 this is not what you want, you can either set
350 @code{eval-expression-debug-on-error} to @code{nil}, or set
351 @code{debug-on-error} to @code{nil} in @code{debugger-mode-hook}.
353 @cindex current stack frame
354   The backtrace buffer shows you the functions that are executing and
355 their argument values.  It also allows you to specify a stack frame by
356 moving point to the line describing that frame.  (A stack frame is the
357 place where the Lisp interpreter records information about a particular
358 invocation of a function.)  The frame whose line point is on is
359 considered the @dfn{current frame}.  Some of the debugger commands
360 operate on the current frame.  If a line starts with a star, that means
361 that exiting that frame will call the debugger again.  This is useful
362 for examining the return value of a function.
364   If a function name is underlined, that means the debugger knows
365 where its source code is located.  You can click with the mouse on
366 that name, or move to it and type @key{RET}, to visit the source code.
368   The debugger itself must be run byte-compiled, since it makes
369 assumptions about how many stack frames are used for the debugger
370 itself.  These assumptions are false if the debugger is running
371 interpreted.
373 @node Debugger Commands
374 @subsection Debugger Commands
375 @cindex debugger command list
377   The debugger buffer (in Debugger mode) provides special commands in
378 addition to the usual Emacs commands.  The most important use of
379 debugger commands is for stepping through code, so that you can see
380 how control flows.  The debugger can step through the control
381 structures of an interpreted function, but cannot do so in a
382 byte-compiled function.  If you would like to step through a
383 byte-compiled function, replace it with an interpreted definition of
384 the same function.  (To do this, visit the source for the function and
385 type @kbd{C-M-x} on its definition.)  You cannot use the Lisp debugger
386 to step through a primitive function.
388 @c FIXME: Add @findex for the following commands?  --xfq
389   Here is a list of Debugger mode commands:
391 @table @kbd
392 @item c
393 Exit the debugger and continue execution.  This resumes execution of
394 the program as if the debugger had never been entered (aside from any
395 side-effects that you caused by changing variable values or data
396 structures while inside the debugger).
398 @item d
399 Continue execution, but enter the debugger the next time any Lisp
400 function is called.  This allows you to step through the
401 subexpressions of an expression, seeing what values the subexpressions
402 compute, and what else they do.
404 The stack frame made for the function call which enters the debugger in
405 this way will be flagged automatically so that the debugger will be
406 called again when the frame is exited.  You can use the @kbd{u} command
407 to cancel this flag.
409 @item b
410 Flag the current frame so that the debugger will be entered when the
411 frame is exited.  Frames flagged in this way are marked with stars
412 in the backtrace buffer.
414 @item u
415 Don't enter the debugger when the current frame is exited.  This
416 cancels a @kbd{b} command on that frame.  The visible effect is to
417 remove the star from the line in the backtrace buffer.
419 @item j
420 Flag the current frame like @kbd{b}.  Then continue execution like
421 @kbd{c}, but temporarily disable break-on-entry for all functions that
422 are set up to do so by @code{debug-on-entry}.
424 @item e
425 Read a Lisp expression in the minibuffer, evaluate it (with the
426 relevant lexical environment, if applicable), and print the
427 value in the echo area.  The debugger alters certain important
428 variables, and the current buffer, as part of its operation; @kbd{e}
429 temporarily restores their values from outside the debugger, so you can
430 examine and change them.  This makes the debugger more transparent.  By
431 contrast, @kbd{M-:} does nothing special in the debugger; it shows you
432 the variable values within the debugger.
434 @item R
435 Like @kbd{e}, but also save the result of evaluation in the
436 buffer @file{*Debugger-record*}.
438 @item q
439 Terminate the program being debugged; return to top-level Emacs
440 command execution.
442 If the debugger was entered due to a @kbd{C-g} but you really want
443 to quit, and not debug, use the @kbd{q} command.
445 @item r
446 Return a value from the debugger.  The value is computed by reading an
447 expression with the minibuffer and evaluating it.
449 The @kbd{r} command is useful when the debugger was invoked due to exit
450 from a Lisp call frame (as requested with @kbd{b} or by entering the
451 frame with @kbd{d}); then the value specified in the @kbd{r} command is
452 used as the value of that frame.  It is also useful if you call
453 @code{debug} and use its return value.  Otherwise, @kbd{r} has the same
454 effect as @kbd{c}, and the specified return value does not matter.
456 You can't use @kbd{r} when the debugger was entered due to an error.
458 @item l
459 Display a list of functions that will invoke the debugger when called.
460 This is a list of functions that are set to break on entry by means of
461 @code{debug-on-entry}.
463 @item v
464 Toggle the display of local variables of the current stack frame.
465 @end table
467 @node Invoking the Debugger
468 @subsection Invoking the Debugger
469 @cindex invoking lisp debugger
471   Here we describe in full detail the function @code{debug} that is used
472 to invoke the debugger.
474 @deffn Command debug &rest debugger-args
475 This function enters the debugger.  It switches buffers to a buffer
476 named @file{*Backtrace*} (or @file{*Backtrace*<2>} if it is the second
477 recursive entry to the debugger, etc.), and fills it with information
478 about the stack of Lisp function calls.  It then enters a recursive
479 edit, showing the backtrace buffer in Debugger mode.
481 The Debugger mode @kbd{c}, @kbd{d}, @kbd{j}, and @kbd{r} commands exit
482 the recursive edit; then @code{debug} switches back to the previous
483 buffer and returns to whatever called @code{debug}.  This is the only
484 way the function @code{debug} can return to its caller.
486 The use of the @var{debugger-args} is that @code{debug} displays the
487 rest of its arguments at the top of the @file{*Backtrace*} buffer, so
488 that the user can see them.  Except as described below, this is the
489 @emph{only} way these arguments are used.
491 However, certain values for first argument to @code{debug} have a
492 special significance.  (Normally, these values are used only by the
493 internals of Emacs, and not by programmers calling @code{debug}.)  Here
494 is a table of these special values:
496 @table @code
497 @item lambda
498 @cindex @code{lambda} in debug
499 A first argument of @code{lambda} means @code{debug} was called
500 because of entry to a function when @code{debug-on-next-call} was
501 non-@code{nil}.  The debugger displays @samp{Debugger
502 entered--entering a function:} as a line of text at the top of the
503 buffer.
505 @item debug
506 @code{debug} as first argument means @code{debug} was called because
507 of entry to a function that was set to debug on entry.  The debugger
508 displays the string @samp{Debugger entered--entering a function:},
509 just as in the @code{lambda} case.  It also marks the stack frame for
510 that function so that it will invoke the debugger when exited.
512 @item t
513 When the first argument is @code{t}, this indicates a call to
514 @code{debug} due to evaluation of a function call form when
515 @code{debug-on-next-call} is non-@code{nil}.  The debugger displays
516 @samp{Debugger entered--beginning evaluation of function call form:}
517 as the top line in the buffer.
519 @item exit
520 When the first argument is @code{exit}, it indicates the exit of a
521 stack frame previously marked to invoke the debugger on exit.  The
522 second argument given to @code{debug} in this case is the value being
523 returned from the frame.  The debugger displays @samp{Debugger
524 entered--returning value:} in the top line of the buffer, followed by
525 the value being returned.
527 @item error
528 @cindex @code{error} in debug
529 When the first argument is @code{error}, the debugger indicates that
530 it is being entered because an error or @code{quit} was signaled and
531 not handled, by displaying @samp{Debugger entered--Lisp error:}
532 followed by the error signaled and any arguments to @code{signal}.
533 For example,
535 @example
536 @group
537 (let ((debug-on-error t))
538   (/ 1 0))
539 @end group
541 @group
542 ------ Buffer: *Backtrace* ------
543 Debugger entered--Lisp error: (arith-error)
544   /(1 0)
546 ------ Buffer: *Backtrace* ------
547 @end group
548 @end example
550 If an error was signaled, presumably the variable
551 @code{debug-on-error} is non-@code{nil}.  If @code{quit} was signaled,
552 then presumably the variable @code{debug-on-quit} is non-@code{nil}.
554 @item nil
555 Use @code{nil} as the first of the @var{debugger-args} when you want
556 to enter the debugger explicitly.  The rest of the @var{debugger-args}
557 are printed on the top line of the buffer.  You can use this feature to
558 display messages---for example, to remind yourself of the conditions
559 under which @code{debug} is called.
560 @end table
561 @end deffn
563 @node Internals of Debugger
564 @subsection Internals of the Debugger
566   This section describes functions and variables used internally by the
567 debugger.
569 @defvar debugger
570 The value of this variable is the function to call to invoke the
571 debugger.  Its value must be a function of any number of arguments, or,
572 more typically, the name of a function.  This function should invoke
573 some kind of debugger.  The default value of the variable is
574 @code{debug}.
576 The first argument that Lisp hands to the function indicates why it
577 was called.  The convention for arguments is detailed in the description
578 of @code{debug} (@pxref{Invoking the Debugger}).
579 @end defvar
581 @deffn Command backtrace
582 @cindex run time stack
583 @cindex call stack
584 This function prints a trace of Lisp function calls currently active.
585 This is the function used by @code{debug} to fill up the
586 @file{*Backtrace*} buffer.  It is written in C, since it must have access
587 to the stack to determine which function calls are active.  The return
588 value is always @code{nil}.
590 In the following example, a Lisp expression calls @code{backtrace}
591 explicitly.  This prints the backtrace to the stream
592 @code{standard-output}, which, in this case, is the buffer
593 @samp{backtrace-output}.
595 Each line of the backtrace represents one function call.  The line shows
596 the values of the function's arguments if they are all known; if they
597 are still being computed, the line says so.  The arguments of special
598 forms are elided.
600 @smallexample
601 @group
602 (with-output-to-temp-buffer "backtrace-output"
603   (let ((var 1))
604     (save-excursion
605       (setq var (eval '(progn
606                          (1+ var)
607                          (list 'testing (backtrace))))))))
609      @result{} (testing nil)
610 @end group
612 @group
613 ----------- Buffer: backtrace-output ------------
614   backtrace()
615   (list ...computing arguments...)
616 @end group
617   (progn ...)
618   eval((progn (1+ var) (list (quote testing) (backtrace))))
619   (setq ...)
620   (save-excursion ...)
621   (let ...)
622   (with-output-to-temp-buffer ...)
623   eval((with-output-to-temp-buffer ...))
624   eval-last-sexp-1(nil)
625 @group
626   eval-last-sexp(nil)
627   call-interactively(eval-last-sexp)
628 ----------- Buffer: backtrace-output ------------
629 @end group
630 @end smallexample
631 @end deffn
633 @defvar debug-on-next-call
634 @cindex @code{eval}, and debugging
635 @cindex @code{apply}, and debugging
636 @cindex @code{funcall}, and debugging
637 If this variable is non-@code{nil}, it says to call the debugger before
638 the next @code{eval}, @code{apply} or @code{funcall}.  Entering the
639 debugger sets @code{debug-on-next-call} to @code{nil}.
641 The @kbd{d} command in the debugger works by setting this variable.
642 @end defvar
644 @defun backtrace-debug level flag
645 This function sets the debug-on-exit flag of the stack frame @var{level}
646 levels down the stack, giving it the value @var{flag}.  If @var{flag} is
647 non-@code{nil}, this will cause the debugger to be entered when that
648 frame later exits.  Even a nonlocal exit through that frame will enter
649 the debugger.
651 This function is used only by the debugger.
652 @end defun
654 @defvar command-debug-status
655 This variable records the debugging status of the current interactive
656 command.  Each time a command is called interactively, this variable is
657 bound to @code{nil}.  The debugger can set this variable to leave
658 information for future debugger invocations during the same command
659 invocation.
661 The advantage of using this variable rather than an ordinary global
662 variable is that the data will never carry over to a subsequent command
663 invocation.
665 This variable is obsolete and will be removed in future versions.
666 @end defvar
668 @defun backtrace-frame frame-number
669 The function @code{backtrace-frame} is intended for use in Lisp
670 debuggers.  It returns information about what computation is happening
671 in the stack frame @var{frame-number} levels down.
673 If that frame has not evaluated the arguments yet, or is a special
674 form, the value is @code{(nil @var{function} @var{arg-forms}@dots{})}.
676 If that frame has evaluated its arguments and called its function
677 already, the return value is @code{(t @var{function}
678 @var{arg-values}@dots{})}.
680 In the return value, @var{function} is whatever was supplied as the
681 @sc{car} of the evaluated list, or a @code{lambda} expression in the
682 case of a macro call.  If the function has a @code{&rest} argument, that
683 is represented as the tail of the list @var{arg-values}.
685 If @var{frame-number} is out of range, @code{backtrace-frame} returns
686 @code{nil}.
687 @end defun
689 @include edebug.texi
691 @node Syntax Errors
692 @section Debugging Invalid Lisp Syntax
693 @cindex debugging invalid Lisp syntax
695   The Lisp reader reports invalid syntax, but cannot say where the real
696 problem is.  For example, the error @samp{End of file during parsing} in
697 evaluating an expression indicates an excess of open parentheses (or
698 square brackets).  The reader detects this imbalance at the end of the
699 file, but it cannot figure out where the close parenthesis should have
700 been.  Likewise, @samp{Invalid read syntax: ")"} indicates an excess close
701 parenthesis or missing open parenthesis, but does not say where the
702 missing parenthesis belongs.  How, then, to find what to change?
704   If the problem is not simply an imbalance of parentheses, a useful
705 technique is to try @kbd{C-M-e} at the beginning of each defun, and see
706 if it goes to the place where that defun appears to end.  If it does
707 not, there is a problem in that defun.
709 @cindex unbalanced parentheses
710 @cindex parenthesis mismatch, debugging
711   However, unmatched parentheses are the most common syntax errors in
712 Lisp, and we can give further advice for those cases.  (In addition,
713 just moving point through the code with Show Paren mode enabled might
714 find the mismatch.)
716 @menu
717 * Excess Open::     How to find a spurious open paren or missing close.
718 * Excess Close::    How to find a spurious close paren or missing open.
719 @end menu
721 @node Excess Open
722 @subsection Excess Open Parentheses
723 @cindex excess open parentheses
725   The first step is to find the defun that is unbalanced.  If there is
726 an excess open parenthesis, the way to do this is to go to the end of
727 the file and type @kbd{C-u C-M-u}.  This will move you to the
728 beginning of the first defun that is unbalanced.
730   The next step is to determine precisely what is wrong.  There is no
731 way to be sure of this except by studying the program, but often the
732 existing indentation is a clue to where the parentheses should have
733 been.  The easiest way to use this clue is to reindent with @kbd{C-M-q}
734 and see what moves.  @strong{But don't do this yet!}  Keep reading,
735 first.
737   Before you do this, make sure the defun has enough close parentheses.
738 Otherwise, @kbd{C-M-q} will get an error, or will reindent all the rest
739 of the file until the end.  So move to the end of the defun and insert a
740 close parenthesis there.  Don't use @kbd{C-M-e} to move there, since
741 that too will fail to work until the defun is balanced.
743   Now you can go to the beginning of the defun and type @kbd{C-M-q}.
744 Usually all the lines from a certain point to the end of the function
745 will shift to the right.  There is probably a missing close parenthesis,
746 or a superfluous open parenthesis, near that point.  (However, don't
747 assume this is true; study the code to make sure.)  Once you have found
748 the discrepancy, undo the @kbd{C-M-q} with @kbd{C-_}, since the old
749 indentation is probably appropriate to the intended parentheses.
751   After you think you have fixed the problem, use @kbd{C-M-q} again.  If
752 the old indentation actually fit the intended nesting of parentheses,
753 and you have put back those parentheses, @kbd{C-M-q} should not change
754 anything.
756 @node Excess Close
757 @subsection Excess Close Parentheses
758 @cindex excess close parentheses
760   To deal with an excess close parenthesis, first go to the beginning
761 of the file, then type @kbd{C-u -1 C-M-u} to find the end of the first
762 unbalanced defun.
764   Then find the actual matching close parenthesis by typing @kbd{C-M-f}
765 at the beginning of that defun.  This will leave you somewhere short of
766 the place where the defun ought to end.  It is possible that you will
767 find a spurious close parenthesis in that vicinity.
769   If you don't see a problem at that point, the next thing to do is to
770 type @kbd{C-M-q} at the beginning of the defun.  A range of lines will
771 probably shift left; if so, the missing open parenthesis or spurious
772 close parenthesis is probably near the first of those lines.  (However,
773 don't assume this is true; study the code to make sure.)  Once you have
774 found the discrepancy, undo the @kbd{C-M-q} with @kbd{C-_}, since the
775 old indentation is probably appropriate to the intended parentheses.
777   After you think you have fixed the problem, use @kbd{C-M-q} again.  If
778 the old indentation actually fits the intended nesting of parentheses,
779 and you have put back those parentheses, @kbd{C-M-q} should not change
780 anything.
782 @node Test Coverage
783 @section Test Coverage
784 @cindex coverage testing
786 @findex testcover-start
787 @findex testcover-mark-all
788 @findex testcover-next-mark
789   You can do coverage testing for a file of Lisp code by loading the
790 @code{testcover} library and using the command @kbd{M-x
791 testcover-start @key{RET} @var{file} @key{RET}} to instrument the
792 code.  Then test your code by calling it one or more times.  Then use
793 the command @kbd{M-x testcover-mark-all} to display colored highlights
794 on the code to show where coverage is insufficient.  The command
795 @kbd{M-x testcover-next-mark} will move point forward to the next
796 highlighted spot.
798   Normally, a red highlight indicates the form was never completely
799 evaluated; a brown highlight means it always evaluated to the same
800 value (meaning there has been little testing of what is done with the
801 result).  However, the red highlight is skipped for forms that can't
802 possibly complete their evaluation, such as @code{error}.  The brown
803 highlight is skipped for forms that are expected to always evaluate to
804 the same value, such as @code{(setq x 14)}.
806   For difficult cases, you can add do-nothing macros to your code to
807 give advice to the test coverage tool.
809 @defmac 1value form
810 Evaluate @var{form} and return its value, but inform coverage testing
811 that @var{form}'s value should always be the same.
812 @end defmac
814 @defmac noreturn form
815 Evaluate @var{form}, informing coverage testing that @var{form} should
816 never return.  If it ever does return, you get a run-time error.
817 @end defmac
819   Edebug also has a coverage testing feature (@pxref{Coverage
820 Testing}).  These features partly duplicate each other, and it would
821 be cleaner to combine them.
824 @node Profiling
825 @section Profiling
826 @cindex profiling
827 @cindex profile
828 @cindex measuring resource usage
829 @cindex memory usage
831 If your program is working correctly, but you want to make it run more
832 quickly or efficiently, the first thing to do is @dfn{profile} your
833 code so that you know how it is using resources.  If you find that one
834 particular function is responsible for a significant portion of the
835 runtime, you can start looking for ways to optimize that piece.
837 Emacs has built-in support for this.  To begin profiling, type
838 @kbd{M-x profiler-start}.  You can choose to profile by processor
839 usage, memory usage, or both.  After doing some work, type
840 @kbd{M-x profiler-report} to display a summary buffer for each
841 resource that you chose to profile.  The names of the report buffers
842 include the times at which the reports were generated, so you can
843 generate another report later on without erasing previous results.
844 When you have finished profiling, type @kbd{M-x profiler-stop} (there
845 is a small overhead associated with profiling).
847 The profiler report buffer shows, on each line, a function that was
848 called, followed by how much resource (processor or memory) it used in
849 absolute and percentage times since profiling started.  If a given
850 line has a @samp{+} symbol at the left-hand side, you can expand that
851 line by typing @key{RET}, in order to see the function(s) called by
852 the higher-level function.  Use a prefix argument (@key{C-u RET}) to
853 see the whole call tree below a function.  Pressing @key{RET} again
854 will collapse back to the original state.
856 Press @kbd{j} or @kbd{mouse-2} to jump to the definition of a function.
857 Press @kbd{d} to view a function's documentation.
858 You can save a profile to a file using @kbd{C-x C-w}.
859 You can compare two profiles using @kbd{=}.
861 @c FIXME reversed calltree?
863 @cindex @file{elp.el}
864 @cindex timing programs
865 The @file{elp} library offers an alternative approach.  See the file
866 @file{elp.el} for instructions.
868 @cindex @file{benchmark.el}
869 @cindex benchmarking
870 You can check the speed of individual Emacs Lisp forms using the
871 @file{benchmark} library.  See the functions @code{benchmark-run} and
872 @code{benchmark-run-compiled} in @file{benchmark.el}.
874 @c Not worth putting in the printed manual.
875 @ifnottex
876 @cindex --enable-profiling option of configure
877 To profile Emacs at the level of its C code, you can build it using the
878 @option{--enable-profiling} option of @command{configure}.  When Emacs
879 exits, it generates a file @file{gmon.out} that you can examine using
880 the @command{gprof} utility.  This feature is mainly useful for
881 debugging Emacs.  It actually stops the Lisp-level @kbd{M-x
882 profiler-@dots{}} commands described above from working.
883 @end ifnottex