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