]> code.delx.au - gnu-emacs/blob - doc/emacs/building.texi
Merge from origin/emacs-25
[gnu-emacs] / doc / emacs / building.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software
3 @c Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Building
6 @chapter Compiling and Testing Programs
7 @cindex building programs
8 @cindex program building
9 @cindex running Lisp functions
10
11 The previous chapter discusses the Emacs commands that are useful
12 for making changes in programs. This chapter deals with commands that
13 assist in the process of compiling and testing programs.
14
15 @menu
16 * Compilation:: Compiling programs in languages other
17 than Lisp (C, Pascal, etc.).
18 * Compilation Mode:: The mode for visiting compiler errors.
19 * Compilation Shell:: Customizing your shell properly
20 for use in the compilation buffer.
21 * Grep Searching:: Searching with grep.
22 * Flymake:: Finding syntax errors on the fly.
23 * Debuggers:: Running symbolic debuggers for non-Lisp programs.
24 * Executing Lisp:: Various modes for editing Lisp programs,
25 with different facilities for running
26 the Lisp programs.
27 * Libraries: Lisp Libraries. How Lisp programs are loaded into Emacs.
28 * Eval: Lisp Eval. Executing a single Lisp expression in Emacs.
29 * Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer.
30 * External Lisp:: Communicating through Emacs with a separate Lisp.
31 @end menu
32
33 @node Compilation
34 @section Running Compilations under Emacs
35 @cindex inferior process
36 @cindex make
37 @cindex compilation errors
38 @cindex error log
39
40 Emacs can run compilers for languages such as C and Fortran, feeding
41 the compilation log into an Emacs buffer. It can also parse the error
42 messages and show you where the errors occurred.
43
44 @table @kbd
45 @item M-x compile
46 Run a compiler asynchronously under Emacs, with error messages going to
47 the @file{*compilation*} buffer.
48 @item M-x recompile
49 Invoke a compiler with the same command as in the last invocation of
50 @kbd{M-x compile}.
51 @item M-x kill-compilation
52 Kill the running compilation subprocess.
53 @end table
54
55 @findex compile
56 To run @code{make} or another compilation command, type @kbd{M-x
57 compile}. This reads a shell command line using the minibuffer, and
58 then executes the command by running a shell as a subprocess (or
59 @dfn{inferior process}) of Emacs. The output is inserted in a buffer
60 named @file{*compilation*}. The current buffer's default directory is
61 used as the working directory for the execution of the command;
62 normally, therefore, compilation takes place in this directory.
63
64 @vindex compile-command
65 The default compilation command is @samp{make -k}, which is usually
66 correct for programs compiled using the @command{make} utility (the
67 @samp{-k} flag tells @command{make} to continue compiling as much as
68 possible after an error). @xref{Top,, Make, make, GNU Make Manual}.
69 If you have done @kbd{M-x compile} before, the command that you
70 specified is automatically stored in the variable
71 @code{compile-command}; this is used as the default the next time you
72 type @kbd{M-x compile}. A file can also specify a file-local value
73 for @code{compile-command} (@pxref{File Variables}).
74
75 Starting a compilation displays the @file{*compilation*} buffer in
76 another window but does not select it. While the compilation is
77 running, the word @samp{run} is shown in the major mode indicator for
78 the @file{*compilation*} buffer, and the word @samp{Compiling} appears
79 in all mode lines. You do not have to keep the @file{*compilation*}
80 buffer visible while compilation is running; it continues in any case.
81 When the compilation ends, for whatever reason, the mode line of the
82 @file{*compilation*} buffer changes to say @samp{exit} (followed by
83 the exit code: @samp{[0]} for a normal exit), or @samp{signal} (if a
84 signal terminated the process).
85
86 If you want to watch the compilation transcript as it appears,
87 switch to the @file{*compilation*} buffer and move point to the end of
88 the buffer. When point is at the end, new compilation output is
89 inserted above point, which remains at the end. Otherwise, point
90 remains fixed while compilation output is added at the end of the
91 buffer.
92
93 @cindex compilation buffer, keeping point at end
94 @vindex compilation-scroll-output
95 If you change the variable @code{compilation-scroll-output} to a
96 non-@code{nil} value, the @file{*compilation*} buffer scrolls
97 automatically to follow the output. If the value is
98 @code{first-error}, scrolling stops when the first error appears,
99 leaving point at that error. For any other non-@code{nil} value,
100 scrolling continues until there is no more output.
101
102 @findex recompile
103 To rerun the last compilation with the same command, type @kbd{M-x
104 recompile}. This reuses the compilation command from the last
105 invocation of @kbd{M-x compile}. It also reuses the
106 @file{*compilation*} buffer and starts the compilation in its default
107 directory, which is the directory in which the previous compilation
108 was started.
109
110 @findex kill-compilation
111 @vindex compilation-always-kill
112 Starting a new compilation also kills any compilation already
113 running in @file{*compilation*}, as the buffer can only handle one
114 compilation at any time. However, @kbd{M-x compile} asks for
115 confirmation before actually killing a compilation that is running; to
116 always automatically kill the compilation without asking, change the
117 variable @code{compilation-always-kill} to @code{t}. You can also
118 kill a compilation process with the command @kbd{M-x
119 kill-compilation}.
120
121 To run two compilations at once, start the first one, then rename
122 the @file{*compilation*} buffer (perhaps using @code{rename-uniquely};
123 @pxref{Misc Buffer}), then switch buffers and start the other
124 compilation. This will create a new @file{*compilation*} buffer.
125
126 @vindex compilation-environment
127 You can control the environment passed to the compilation command
128 with the variable @code{compilation-environment}. Its value is a list
129 of environment variable settings; each element should be a string of
130 the form @code{"@var{envvarname}=@var{value}"}. These environment
131 variable settings override the usual ones.
132
133 @node Compilation Mode
134 @section Compilation Mode
135
136 @cindex Compilation mode
137 @cindex mode, Compilation
138 @cindex locus
139 The @file{*compilation*} buffer uses a major mode called Compilation
140 mode. Compilation mode turns each error message in the buffer into a
141 hyperlink; you can move point to it and type @key{RET}, or click on it
142 with the mouse (@pxref{Mouse References}), to visit the @dfn{locus} of
143 the error message in a separate window. The locus is the specific
144 position in a file where that error occurred.
145
146 @findex compile-goto-error
147 @vindex compilation-auto-jump-to-first-error
148 If you change the variable
149 @code{compilation-auto-jump-to-first-error} to a non-@code{nil} value,
150 Emacs automatically visits the locus of the first error message that
151 appears in the @file{*compilation*} buffer.
152
153 Compilation mode provides the following additional commands. These
154 commands can also be used in @file{*grep*} buffers, where the
155 hyperlinks are search matches rather than error messages (@pxref{Grep
156 Searching}).
157
158 @table @kbd
159 @item M-g M-n
160 @itemx M-g n
161 @itemx C-x `
162 Visit the locus of the next error message or match (@code{next-error}).
163 @item M-g M-p
164 @itemx M-g p
165 Visit the locus of the previous error message or match
166 (@code{previous-error}).
167 @item M-n
168 Move point to the next error message or match, without visiting its
169 locus (@code{compilation-next-error}).
170 @item M-p
171 Move point to the previous error message or match, without visiting
172 its locus (@code{compilation-previous-error}).
173 @item M-@}
174 Move point to the next error message or match occurring in a different
175 file (@code{compilation-next-file}).
176 @item M-@{
177 Move point to the previous error message or match occurring in a
178 different file (@code{compilation-previous-file}).
179 @item C-c C-f
180 Toggle Next Error Follow minor mode, which makes cursor motion in the
181 compilation buffer produce automatic source display.
182 @end table
183
184 @kindex M-g M-n
185 @kindex M-g n
186 @kindex C-x `
187 @findex next-error
188 @vindex next-error-highlight
189 To visit errors sequentially, type @w{@kbd{C-x `}}
190 (@code{next-error}), or equivalently @kbd{M-g M-n} or @kbd{M-g n}.
191 This command can be invoked from any buffer, not just a Compilation
192 mode buffer. The first time you invoke it after a compilation, it
193 visits the locus of the first error message. Each subsequent
194 @w{@kbd{C-x `}} visits the next error, in a similar fashion. If you
195 visit a specific error with @key{RET} or a mouse click in the
196 @file{*compilation*} buffer, subsequent @w{@kbd{C-x `}} commands
197 advance from there. When @w{@kbd{C-x `}} finds no more error messages
198 to visit, it signals an error. @w{@kbd{C-u C-x `}} starts again from
199 the beginning of the compilation buffer, and visits the first locus.
200
201 @kbd{M-g M-p} or @kbd{M-g p} (@code{previous-error}) iterates
202 through errors in the opposite direction.
203
204 The @code{next-error} and @code{previous-error} commands don't just
205 act on the errors or matches listed in @file{*compilation*} and
206 @file{*grep*} buffers; they also know how to iterate through error or
207 match lists produced by other commands, such as @kbd{M-x occur}
208 (@pxref{Other Repeating Search}). If you are already in a buffer
209 containing error messages or matches, those are the ones that are
210 iterated through; otherwise, Emacs looks for a buffer containing error
211 messages or matches amongst the windows of the selected frame, then
212 for one that @code{next-error} or @code{previous-error} previously
213 iterated through, and finally amongst all other buffers. If the
214 buffer chosen for iterating through is not currently displayed in a
215 window, it will be displayed.
216
217 @vindex compilation-skip-threshold
218 By default, the @code{next-error} and @code{previous-error} commands
219 skip less important messages. The variable
220 @code{compilation-skip-threshold} controls this. The default value,
221 1, means to skip anything less important than a warning. A value of 2
222 means to skip anything less important than an error, while 0 means not
223 to skip any messages.
224
225 When Emacs visits the locus of an error message, it momentarily
226 highlights the relevant source line. The duration of this highlight
227 is determined by the variable @code{next-error-highlight}.
228
229 @vindex compilation-context-lines
230 If the @file{*compilation*} buffer is shown in a window with a left
231 fringe (@pxref{Fringes}), the locus-visiting commands put an arrow in
232 the fringe, pointing to the current error message. If the window has
233 no left fringe, such as on a text terminal, these commands scroll the
234 window so that the current message is at the top of the window. If
235 you change the variable @code{compilation-context-lines} to an integer
236 value @var{n}, these commands scroll the window so that the current
237 error message is @var{n} lines from the top, whether or not there is a
238 fringe; the default value, @code{nil}, gives the behavior described
239 above.
240
241 @vindex compilation-error-regexp-alist
242 @vindex grep-regexp-alist
243 To parse messages from the compiler, Compilation mode uses the
244 variable @code{compilation-error-regexp-alist} which lists various
245 error message formats and tells Emacs how to extract the locus from
246 each. A similar variable, @code{grep-regexp-alist}, tells Emacs how
247 to parse output from a @code{grep} command (@pxref{Grep Searching}).
248
249 @findex compilation-next-error
250 @findex compilation-previous-error
251 @findex compilation-next-file
252 @findex compilation-previous-file
253 Compilation mode also defines the keys @key{SPC} and @key{DEL} to
254 scroll by screenfuls; @kbd{M-n} (@code{compilation-next-error}) and
255 @kbd{M-p} (@code{compilation-previous-error}) to move to the next or
256 previous error message; and @kbd{M-@{} (@code{compilation-next-file})
257 and @kbd{M-@}} (@code{compilation-previous-file}) to move to the next
258 or previous error message for a different source file.
259
260 @cindex Next Error Follow mode
261 @findex next-error-follow-minor-mode
262 You can type @kbd{C-c C-f} to toggle Next Error Follow mode. In
263 this minor mode, ordinary cursor motion in the compilation buffer
264 automatically updates the source buffer, i.e., moving the cursor over
265 an error message causes the locus of that error to be displayed.
266
267 The features of Compilation mode are also available in a minor mode
268 called Compilation Minor mode. This lets you parse error messages in
269 any buffer, not just a normal compilation output buffer. Type
270 @kbd{M-x compilation-minor-mode} to enable the minor mode. For
271 instance, in an Rlogin buffer (@pxref{Remote Host}), Compilation minor
272 mode automatically accesses remote source files by FTP (@pxref{File
273 Names}).
274
275 @node Compilation Shell
276 @section Subshells for Compilation
277
278 The @kbd{M-x compile} command uses a shell to run the compilation
279 command, but specifies the option for a noninteractive shell. This
280 means, in particular, that the shell should start with no prompt. If
281 you find your usual shell prompt making an unsightly appearance in the
282 @file{*compilation*} buffer, it means you have made a mistake in your
283 shell's init file by setting the prompt unconditionally. (This init
284 file may be named @file{.bashrc}, @file{.profile}, @file{.cshrc},
285 @file{.shrc}, etc., depending on what shell you use.) The shell init
286 file should set the prompt only if there already is a prompt. Here's
287 how to do it in bash:
288
289 @example
290 if [ "$@{PS1+set@}" = set ]
291 then PS1=@dots{}
292 fi
293 @end example
294
295 @noindent
296 And here's how to do it in csh:
297
298 @example
299 if ($?prompt) set prompt = @dots{}
300 @end example
301
302 Emacs does not expect a compiler process to launch asynchronous
303 subprocesses; if it does, and they keep running after the main
304 compiler process has terminated, Emacs may kill them or their output
305 may not arrive in Emacs. To avoid this problem, make the main
306 compilation process wait for its subprocesses to finish. In a shell
307 script, you can do this using @samp{$!} and @samp{wait}, like this:
308
309 @example
310 (sleep 10; echo 2nd)& pid=$! # @r{Record pid of subprocess}
311 echo first message
312 wait $pid # @r{Wait for subprocess}
313 @end example
314
315 @noindent
316 If the background process does not output to the compilation buffer,
317 so you only need to prevent it from being killed when the main
318 compilation process terminates, this is sufficient:
319
320 @example
321 nohup @var{command}; sleep 1
322 @end example
323
324 @ifnottex
325 On MS-DOS, asynchronous subprocesses are
326 not supported, so @kbd{M-x compile} runs the compilation command
327 synchronously (i.e., you must wait until the command finishes before
328 you can do anything else in Emacs). @xref{MS-DOS}.
329 @end ifnottex
330
331 @node Grep Searching
332 @section Searching with Grep under Emacs
333
334 Just as you can run a compiler from Emacs and then visit the lines
335 with compilation errors, you can also run @command{grep} and then
336 visit the lines on which matches were found. This works by treating
337 the matches reported by @command{grep} as if they were errors.
338 The output buffer uses Grep mode, which is a variant of Compilation
339 mode (@pxref{Compilation Mode}).
340
341 @table @kbd
342 @item M-x grep
343 @itemx M-x lgrep
344 Run @command{grep} asynchronously under Emacs, listing matching lines in
345 the buffer named @file{*grep*}.
346 @item M-x grep-find
347 @itemx M-x find-grep
348 @itemx M-x rgrep
349 Run @command{grep} via @code{find}, and collect output in the
350 @file{*grep*} buffer.
351 @item M-x zrgrep
352 Run @code{zgrep} and collect output in the @file{*grep*} buffer.
353 @item M-x kill-grep
354 Kill the running @command{grep} subprocess.
355 @end table
356
357 @findex grep
358 To run @command{grep}, type @kbd{M-x grep}, then enter a command line
359 that specifies how to run @command{grep}. Use the same arguments you
360 would give @command{grep} when running it normally: a @command{grep}-style
361 regexp (usually in single-quotes to quote the shell's special
362 characters) followed by file names, which may use wildcards. If you
363 specify a prefix argument for @kbd{M-x grep}, it finds the identifier
364 (@pxref{Xref}) in the buffer around point, and puts that into the
365 default @command{grep} command.
366
367 Your command need not simply run @command{grep}; you can use any shell
368 command that produces output in the same format. For instance, you
369 can chain @command{grep} commands, like this:
370
371 @example
372 grep -nH -e foo *.el | grep bar | grep toto
373 @end example
374
375 The output from @command{grep} goes in the @file{*grep*} buffer. You
376 can find the corresponding lines in the original files using @w{@kbd{C-x
377 `}}, @key{RET}, and so forth, just like compilation errors.
378
379 Some grep programs accept a @samp{--color} option to output special
380 markers around matches for the purpose of highlighting. You can make
381 use of this feature by setting @code{grep-highlight-matches} to
382 @code{t}. When displaying a match in the source buffer, the exact
383 match will be highlighted, instead of the entire source line.
384
385 The @command{grep} commands will offer to save buffers before
386 running. This is controlled by the @code{grep-save-buffers} variable.
387 The possible values are either @code{nil} (don't save), @code{ask}
388 (ask before saving), a function which will be used as a predicate (and
389 is called with the file name as the parameter and should return
390 non-nil if the buffer is to be saved), and any other non-@code{nil}
391 value means that all buffers should be saved without asking.
392
393 @findex grep-find
394 @findex find-grep
395 The command @kbd{M-x grep-find} (also available as @kbd{M-x
396 find-grep}) is similar to @kbd{M-x grep}, but it supplies a different
397 initial default for the command---one that runs both @code{find} and
398 @command{grep}, so as to search every file in a directory tree. See also
399 the @code{find-grep-dired} command, in @ref{Dired and Find}.
400
401 @findex lgrep
402 @findex rgrep
403 @findex zrgrep
404 The commands @kbd{M-x lgrep} (local grep) and @kbd{M-x rgrep}
405 (recursive grep) are more user-friendly versions of @command{grep} and
406 @code{grep-find}, which prompt separately for the regular expression
407 to match, the files to search, and the base directory for the search.
408 Case sensitivity of the search is controlled by the current value of
409 @code{case-fold-search}. The command @kbd{M-x zrgrep} is similar to
410 @kbd{M-x rgrep}, but it calls @command{zgrep} instead of
411 @command{grep} to search the contents of gzipped files.
412
413 These commands build the shell commands based on the variables
414 @code{grep-template} (for @code{lgrep}) and @code{grep-find-template}
415 (for @code{rgrep}). The files to search can use aliases defined in
416 the variable @code{grep-files-aliases}.
417
418 @vindex grep-find-ignored-directories
419 Directories listed in the variable
420 @code{grep-find-ignored-directories} are automatically skipped by
421 @kbd{M-x rgrep}. The default value includes the data directories used
422 by various version control systems.
423
424 @node Flymake
425 @section Finding Syntax Errors On The Fly
426 @cindex checking syntax
427
428 Flymake mode is a minor mode that performs on-the-fly syntax
429 checking for many programming and markup languages, including C, C++,
430 Perl, HTML, and @TeX{}/@LaTeX{}. It is somewhat analogous to Flyspell
431 mode, which performs spell checking for ordinary human languages in a
432 similar fashion (@pxref{Spelling}). As you edit a file, Flymake mode
433 runs an appropriate syntax checking tool in the background, using a
434 temporary copy of the buffer. It then parses the error and warning
435 messages, and highlights the erroneous lines in the buffer. The
436 syntax checking tool used depends on the language; for example, for
437 C/C++ files this is usually the C compiler. Flymake can also use
438 build tools such as @code{make} for checking complicated projects.
439
440 To enable Flymake mode, type @kbd{M-x flymake-mode}. You can jump
441 to the errors that it finds by using @kbd{M-x flymake-goto-next-error}
442 and @kbd{M-x flymake-goto-prev-error}. To display any error messages
443 associated with the current line, type @kbd{M-x
444 flymake-display-err-menu-for-current-line}.
445
446 For more details about using Flymake,
447 @ifnottex
448 see @ref{Top, Flymake, Flymake, flymake, The Flymake Manual}.
449 @end ifnottex
450 @iftex
451 see the Flymake Info manual, which is distributed with Emacs.
452 @end iftex
453
454 @node Debuggers
455 @section Running Debuggers Under Emacs
456 @cindex debuggers
457 @cindex GUD library
458 @cindex GDB
459 @cindex DBX
460 @cindex SDB
461 @cindex XDB
462 @cindex Perldb
463 @cindex JDB
464 @cindex PDB
465
466 The GUD (Grand Unified Debugger) library provides an Emacs interface
467 to a wide variety of symbolic debuggers. It can run the GNU Debugger
468 (GDB), as well as DBX, SDB, XDB, Perl's debugging mode, the Python
469 debugger PDB, and the Java Debugger JDB.
470
471 Emacs provides a special interface to GDB, which uses extra Emacs
472 windows to display the state of the debugged program. @xref{GDB
473 Graphical Interface}.
474
475 Emacs also has a built-in debugger for Emacs Lisp programs.
476 @xref{Debugging,, The Lisp Debugger, elisp, the Emacs Lisp Reference
477 Manual}.
478
479 @menu
480 * Starting GUD:: How to start a debugger subprocess.
481 * Debugger Operation:: Connection between the debugger and source buffers.
482 * Commands of GUD:: Key bindings for common commands.
483 * GUD Customization:: Defining your own commands for GUD.
484 * GDB Graphical Interface:: An enhanced mode that uses GDB features to
485 implement a graphical debugging environment.
486 @end menu
487
488 @node Starting GUD
489 @subsection Starting GUD
490
491 There are several commands for starting a debugger subprocess, each
492 corresponding to a particular debugger program.
493
494 @table @kbd
495 @item M-x gdb
496 @findex gdb
497 Run GDB as a subprocess, and interact with it via an IDE-like Emacs
498 interface. @xref{GDB Graphical Interface}, for more information about
499 this command.
500
501 @item M-x gud-gdb
502 @findex gud-gdb
503 Run GDB, using a GUD interaction buffer for input and output to the
504 GDB subprocess (@pxref{Debugger Operation}). If such a buffer already
505 exists, switch to it; otherwise, create the buffer and switch to it.
506
507 The other commands in this list do the same, for other debugger
508 programs.
509
510 @item M-x perldb
511 @findex perldb
512 Run the Perl interpreter in debug mode.
513
514 @item M-x jdb
515 @findex jdb
516 Run the Java debugger.
517
518 @item M-x pdb
519 @findex pdb
520 Run the Python debugger.
521
522 @item M-x dbx
523 @findex dbx
524 Run the DBX debugger.
525
526 @item M-x xdb
527 @findex xdb
528 @vindex gud-xdb-directories
529 Run the XDB debugger.
530
531 @item M-x sdb
532 @findex sdb
533 Run the SDB debugger.
534 @end table
535
536 Each of these commands reads a command line to invoke the debugger,
537 using the minibuffer. The minibuffer's initial contents contain the
538 standard executable name and options for the debugger, and sometimes
539 also a guess for the name of the executable file you want to debug.
540 Shell wildcards and variables are not allowed in this command line.
541 Emacs assumes that the first command argument which does not start
542 with a @samp{-} is the executable file name.
543
544 @cindex remote host, debugging on
545 Tramp provides a facility for remote debugging, whereby both the
546 debugger and the program being debugged are on the same remote host.
547 @xref{Running a debugger on a remote host,,, tramp, The Tramp Manual},
548 for details. This is separate from GDB's remote debugging feature,
549 where the program and the debugger run on different machines
550 (@pxref{Remote Debugging,, Debugging Remote Programs, gdb, The GNU
551 debugger}).
552
553 @node Debugger Operation
554 @subsection Debugger Operation
555 @cindex GUD interaction buffer
556
557 The @dfn{GUD interaction buffer} is an Emacs buffer which is used to
558 send text commands to a debugger subprocess, and record its output.
559 This is the basic interface for interacting with a debugger, used by
560 @kbd{M-x gud-gdb} and other commands listed in
561 @iftex
562 the preceding section.
563 @end iftex
564 @ifnottex
565 @ref{Starting GUD}.
566 @end ifnottex
567 The @kbd{M-x gdb} command extends this interface with additional
568 specialized buffers for controlling breakpoints, stack frames, and
569 other aspects of the debugger state (@pxref{GDB Graphical Interface}).
570
571 The GUD interaction buffer uses a variant of Shell mode, so the
572 Emacs commands defined by Shell mode are available (@pxref{Shell
573 Mode}). Completion is available for most debugger commands
574 (@pxref{Completion}), and you can use the usual Shell mode history
575 commands to repeat them.
576 @iftex
577 See the next section
578 @end iftex
579 @ifnottex
580 @xref{Commands of GUD},
581 @end ifnottex
582 for special commands that can be used in the GUD interaction buffer.
583
584 As you debug a program, Emacs displays the relevant source files by
585 visiting them in Emacs buffers, with an arrow in the left fringe
586 indicating the current execution line. (On a text terminal, the arrow
587 appears as @samp{=>}, overlaid on the first two text columns.) Moving
588 point in such a buffer does not move the arrow. You are free to edit
589 these source files, but note that inserting or deleting lines will
590 throw off the arrow's positioning, as Emacs has no way to figure out
591 which edited source line corresponds to the line reported by the
592 debugger subprocess. To update this information, you typically have
593 to recompile and restart the program.
594
595 @cindex GUD Tooltip mode
596 @cindex mode, GUD Tooltip
597 @findex gud-tooltip-mode
598 @vindex gud-tooltip-echo-area
599 GUD Tooltip mode is a global minor mode that adds tooltip support to
600 GUD@. To toggle this mode, type @kbd{M-x gud-tooltip-mode}. It is
601 disabled by default. If enabled, you can move the mouse cursor over a
602 variable, a function, or a macro (collectively called
603 @dfn{identifiers}) to show their values in tooltips
604 (@pxref{Tooltips}). Alternatively, mark an identifier or an
605 expression by dragging the mouse over it, then leave the mouse in the
606 marked area to have the value of the expression displayed in a
607 tooltip. The GUD Tooltip mode takes effect in the GUD interaction
608 buffer, and in all source buffers with major modes listed in the
609 variable @code{gud-tooltip-modes}. If the variable
610 @code{gud-tooltip-echo-area} is non-@code{nil}, or if you turned off
611 the tooltip mode, values are shown in the echo area instead of a
612 tooltip.
613
614 When using GUD Tooltip mode with @kbd{M-x gud-gdb}, displaying an
615 expression's value in GDB can sometimes expand a macro, potentially
616 causing side effects in the debugged program. For that reason, using
617 tooltips in @code{gud-gdb} is disabled. If you use the @kbd{M-x gdb}
618 interface, this problem does not occur, as there is special code to
619 avoid side-effects; furthermore, you can display macro definitions
620 associated with an identifier when the program is not executing.
621
622 @node Commands of GUD
623 @subsection Commands of GUD
624
625 GUD provides commands for setting and clearing breakpoints,
626 selecting stack frames, and stepping through the program.
627
628 @table @kbd
629 @item C-x C-a C-b
630 @kindex C-x C-a C-b
631 Set a breakpoint on the source line that point is on.
632 @end table
633
634 @kbd{C-x C-a C-b} (@code{gud-break}), when called in a source
635 buffer, sets a debugger breakpoint on the current source line. This
636 command is available only after starting GUD@. If you call it in a
637 buffer that is not associated with any debugger subprocess, it signals
638 a error.
639
640 @kindex C-x C-a @r{(GUD)}
641 The following commands are available both in the GUD interaction
642 buffer and globally, but with different key bindings. The keys
643 starting with @kbd{C-c} are available only in the GUD interaction
644 buffer, while those starting with @kbd{C-x C-a} are available
645 globally. Some of these commands are also available via the tool bar;
646 some are not supported by certain debuggers.
647
648 @table @kbd
649 @item C-c C-l
650 @kindex C-c C-l @r{(GUD)}
651 @itemx C-x C-a C-l
652 @findex gud-refresh
653 Display, in another window, the last source line referred to in the
654 GUD interaction buffer (@code{gud-refresh}).
655
656 @item C-c C-s
657 @kindex C-c C-s @r{(GUD)}
658 @itemx C-x C-a C-s
659 @findex gud-step
660 Execute the next single line of code (@code{gud-step}). If the line
661 contains a function call, execution stops after entering the called
662 function.
663
664 @item C-c C-n
665 @kindex C-c C-n @r{(GUD)}
666 @itemx C-x C-a C-n
667 @findex gud-next
668 Execute the next single line of code, stepping across function calls
669 without stopping inside the functions (@code{gud-next}).
670
671 @item C-c C-i
672 @kindex C-c C-i @r{(GUD)}
673 @itemx C-x C-a C-i
674 @findex gud-stepi
675 Execute a single machine instruction (@code{gud-stepi}).
676
677 @item C-c C-p
678 @kindex C-c C-p @r{(GUD)}
679 @itemx C-x C-a C-p
680 @findex gud-print
681 Evaluate the expression at point (@code{gud-print}). If Emacs
682 does not print the exact expression that you want, mark it as a region
683 first.
684
685 @need 3000
686 @item C-c C-r
687 @kindex C-c C-r @r{(GUD)}
688 @itemx C-x C-a C-r
689 @findex gud-cont
690 Continue execution without specifying any stopping point. The program
691 will run until it hits a breakpoint, terminates, or gets a signal that
692 the debugger is checking for (@code{gud-cont}).
693
694 @need 1000
695 @item C-c C-d
696 @kindex C-c C-d @r{(GUD)}
697 @itemx C-x C-a C-d
698 @findex gud-remove
699 Delete the breakpoint(s) on the current source line, if any
700 (@code{gud-remove}). If you use this command in the GUD interaction
701 buffer, it applies to the line where the program last stopped.
702
703 @item C-c C-t
704 @kindex C-c C-t @r{(GUD)}
705 @itemx C-x C-a C-t
706 @findex gud-tbreak
707 Set a temporary breakpoint on the current source line, if any
708 (@code{gud-tbreak}). If you use this command in the GUD interaction
709 buffer, it applies to the line where the program last stopped.
710
711 @item C-c <
712 @kindex C-c < @r{(GUD)}
713 @itemx C-x C-a <
714 @findex gud-up
715 Select the next enclosing stack frame (@code{gud-up}). This is
716 equivalent to the GDB command @samp{up}.
717
718 @item C-c >
719 @kindex C-c > @r{(GUD)}
720 @itemx C-x C-a >
721 @findex gud-down
722 Select the next inner stack frame (@code{gud-down}). This is
723 equivalent to the GDB command @samp{down}.
724
725 @item C-c C-u
726 @kindex C-c C-u @r{(GUD)}
727 @itemx C-x C-a C-u
728 @findex gud-until
729 Continue execution to the current line (@code{gud-until}). The
730 program will run until it hits a breakpoint, terminates, gets a signal
731 that the debugger is checking for, or reaches the line on which the
732 cursor currently sits.
733
734 @item C-c C-f
735 @kindex C-c C-f @r{(GUD)}
736 @itemx C-x C-a C-f
737 @findex gud-finish
738 Run the program until the selected stack frame returns or
739 stops for some other reason (@code{gud-finish}).
740 @end table
741
742 If you are using GDB, these additional key bindings are available:
743
744 @table @kbd
745 @item C-x C-a C-j
746 @kindex C-x C-a C-j @r{(GUD)}
747 @findex gud-jump
748 Only useful in a source buffer, @code{gud-jump} transfers the
749 program's execution point to the current line. In other words, the
750 next line that the program executes will be the one where you gave the
751 command. If the new execution line is in a different function from
752 the previously one, GDB prompts for confirmation since the results may
753 be bizarre. See the GDB manual entry regarding @code{jump} for
754 details.
755
756 @item @key{TAB}
757 @kindex TAB @r{(GUD)}
758 @findex gud-gdb-complete-command
759 With GDB, complete a symbol name (@code{gud-gdb-complete-command}).
760 This key is available only in the GUD interaction buffer.
761 @end table
762
763 These commands interpret a numeric argument as a repeat count, when
764 that makes sense.
765
766 Because @key{TAB} serves as a completion command, you can't use it to
767 enter a tab as input to the program you are debugging with GDB@.
768 Instead, type @kbd{C-q @key{TAB}} to enter a tab.
769
770 @node GUD Customization
771 @subsection GUD Customization
772
773 @vindex gdb-mode-hook
774 @vindex dbx-mode-hook
775 @vindex sdb-mode-hook
776 @vindex xdb-mode-hook
777 @vindex perldb-mode-hook
778 @vindex pdb-mode-hook
779 @vindex jdb-mode-hook
780 On startup, GUD runs one of the following hooks:
781 @code{gdb-mode-hook}, if you are using GDB; @code{dbx-mode-hook}, if
782 you are using DBX; @code{sdb-mode-hook}, if you are using SDB;
783 @code{xdb-mode-hook}, if you are using XDB; @code{perldb-mode-hook},
784 for Perl debugging mode; @code{pdb-mode-hook}, for PDB;
785 @code{jdb-mode-hook}, for JDB@. @xref{Hooks}.
786
787 The @code{gud-def} Lisp macro (@pxref{Defining Macros,,, elisp, the
788 Emacs Lisp Reference Manual}) provides a convenient way to define an
789 Emacs command that sends a particular command string to the debugger,
790 and set up a key binding for in the GUD interaction buffer:
791
792 @findex gud-def
793 @example
794 (gud-def @var{function} @var{cmdstring} @var{binding} @var{docstring})
795 @end example
796
797 This defines a command named @var{function} which sends
798 @var{cmdstring} to the debugger process, and gives it the documentation
799 string @var{docstring}. You can then use the command @var{function} in any
800 buffer. If @var{binding} is non-@code{nil}, @code{gud-def} also binds
801 the command to @kbd{C-c @var{binding}} in the GUD buffer's mode and to
802 @kbd{C-x C-a @var{binding}} generally.
803
804 The command string @var{cmdstring} may contain certain
805 @samp{%}-sequences that stand for data to be filled in at the time
806 @var{function} is called:
807
808 @table @samp
809 @item %f
810 The name of the current source file. If the current buffer is the GUD
811 buffer, then the current source file is the file that the program
812 stopped in.
813
814 @item %l
815 The number of the current source line. If the current buffer is the GUD
816 buffer, then the current source line is the line that the program
817 stopped in.
818
819 @item %e
820 In transient-mark-mode the text in the region, if it is active.
821 Otherwise the text of the C lvalue or function-call expression at or
822 adjacent to point.
823
824 @item %a
825 The text of the hexadecimal address at or adjacent to point.
826
827 @item %p
828 The numeric argument of the called function, as a decimal number. If
829 the command is used without a numeric argument, @samp{%p} stands for the
830 empty string.
831
832 If you don't use @samp{%p} in the command string, the command you define
833 ignores any numeric argument.
834
835 @item %d
836 The name of the directory of the current source file.
837
838 @item %c
839 Fully qualified class name derived from the expression surrounding point
840 (jdb only).
841 @end table
842
843 @node GDB Graphical Interface
844 @subsection GDB Graphical Interface
845
846 The command @kbd{M-x gdb} starts GDB in an IDE-like interface, with
847 specialized buffers for controlling breakpoints, stack frames, and
848 other aspects of the debugger state. It also provides additional ways
849 to control the debugging session with the mouse, such as clicking in
850 the fringe of a source buffer to set a breakpoint there.
851
852 @vindex gud-gdb-command-name
853 To run GDB using just the GUD interaction buffer interface, without
854 these additional features, use @kbd{M-x gud-gdb} (@pxref{Starting
855 GUD}). You must use this if you want to debug multiple programs
856 within one Emacs session, as that is currently unsupported by @kbd{M-x
857 gdb}.
858
859 Internally, @kbd{M-x gdb} informs GDB that its screen size is
860 unlimited; for correct operation, you must not change GDB's screen
861 height and width values during the debugging session.
862
863 @menu
864 * GDB User Interface Layout:: Control the number of displayed buffers.
865 * Source Buffers:: Use the mouse in the fringe/margin to
866 control your program.
867 * Breakpoints Buffer:: A breakpoint control panel.
868 * Threads Buffer:: Displays your threads.
869 * Stack Buffer:: Select a frame from the call stack.
870 * Other GDB Buffers:: Other buffers for controlling the GDB state.
871 * Watch Expressions:: Monitor variable values in the speedbar.
872 * Multithreaded Debugging:: Debugging programs with several threads.
873 @end menu
874
875 @node GDB User Interface Layout
876 @subsubsection GDB User Interface Layout
877 @cindex GDB User Interface layout
878
879 @vindex gdb-many-windows
880 If the variable @code{gdb-many-windows} is @code{nil} (the default),
881 @kbd{M-x gdb} normally displays only the GUD interaction buffer.
882 However, if the variable @code{gdb-show-main} is also non-@code{nil},
883 it starts with two windows: one displaying the GUD interaction buffer,
884 and the other showing the source for the @code{main} function of the
885 program you are debugging.
886
887 If @code{gdb-many-windows} is non-@code{nil}, then @kbd{M-x gdb}
888 displays the following frame layout:
889
890 @smallexample
891 @group
892 +--------------------------------+--------------------------------+
893 | GUD interaction buffer | Locals/Registers buffer |
894 |--------------------------------+--------------------------------+
895 | Primary Source buffer | I/O buffer for debugged pgm |
896 |--------------------------------+--------------------------------+
897 | Stack buffer | Breakpoints/Threads buffer |
898 +--------------------------------+--------------------------------+
899 @end group
900 @end smallexample
901
902 @findex gdb-restore-windows
903 @findex gdb-many-windows
904 If you ever change the window layout, you can restore the many-windows
905 layout by typing @kbd{M-x gdb-restore-windows}. To toggle
906 between the many windows layout and a simple layout with just the GUD
907 interaction buffer and a source file, type @kbd{M-x gdb-many-windows}.
908
909 You may also specify additional GDB-related buffers to display,
910 either in the same frame or a different one. Select the buffers you
911 want by typing @code{M-x gdb-display-@var{buffertype}-buffer} or
912 @code{M-x gdb-frame-@var{buffertype}-buffer}, where @var{buffertype}
913 is the relevant buffer type, such as @samp{breakpoints}. You can do
914 the same with the menu bar, with the @samp{GDB-Windows} and
915 @samp{GDB-Frames} sub-menus of the @samp{GUD} menu.
916
917 When you finish debugging, kill the GUD interaction buffer with
918 @kbd{C-x k}, which will also kill all the buffers associated with the
919 session. However you need not do this if, after editing and
920 re-compiling your source code within Emacs, you wish to continue
921 debugging. When you restart execution, GDB automatically finds the
922 new executable. Keeping the GUD interaction buffer has the advantage
923 of keeping the shell history as well as GDB's breakpoints. You do
924 need to check that the breakpoints in recently edited source files are
925 still in the right places.
926
927 @node Source Buffers
928 @subsubsection Source Buffers
929 @cindex fringes, for debugging
930
931 @table @asis
932 @item @kbd{Mouse-1} (in fringe)
933 Set or clear a breakpoint on that line.
934
935 @item @kbd{C-Mouse-1} (in fringe)
936 Enable or disable a breakpoint on that line.
937
938 @item @kbd{Mouse-3} (in fringe)
939 Continue execution to that line.
940
941 @item @kbd{C-Mouse-3} (in fringe)
942 Jump to that line.
943 @end table
944
945 On a graphical display, you can click @kbd{Mouse-1} in the fringe of
946 a source buffer, to set a breakpoint on that line (@pxref{Fringes}).
947 A red dot appears in the fringe, where you clicked. If a breakpoint
948 already exists there, the click removes it. A @kbd{C-Mouse-1} click
949 enables or disables an existing breakpoint; a breakpoint that is
950 disabled, but not unset, is indicated by a gray dot.
951
952 On a text terminal, or when fringes are disabled, enabled
953 breakpoints are indicated with a @samp{B} character in the left margin
954 of the window. Disabled breakpoints are indicated with @samp{b}.
955 (The margin is only displayed if a breakpoint is present.)
956
957 A solid arrow in the left fringe of a source buffer indicates the
958 line of the innermost frame where the debugged program has stopped. A
959 hollow arrow indicates the current execution line of a higher-level
960 frame. If you drag the arrow in the fringe with @kbd{Mouse-1}, that
961 causes execution to advance to the line where you release the button.
962 Alternatively, you can click @kbd{Mouse-3} in the fringe to advance to
963 that line. You can click @kbd{C-Mouse-3} in the fringe to jump to
964 that line without executing the intermediate lines. This command
965 allows you to go backwards, which can be useful for running through
966 code that has already executed, in order to examine its execution in
967 more detail.
968
969 @node Breakpoints Buffer
970 @subsubsection Breakpoints Buffer
971
972 The GDB Breakpoints buffer shows the breakpoints, watchpoints and
973 catchpoints in the debugger session. @xref{Breakpoints,,, gdb, The
974 GNU debugger}. It provides the following commands, which mostly apply
975 to the @dfn{current breakpoint} (the breakpoint which point is on):
976
977 @table @kbd
978 @item @key{SPC}
979 @kindex SPC @r{(GDB Breakpoints buffer)}
980 @findex gdb-toggle-breakpoint
981 Enable/disable current breakpoint (@code{gdb-toggle-breakpoint}). On
982 a graphical display, this changes the color of the dot in the fringe
983 of the source buffer at that line. The dot is red when the breakpoint
984 is enabled, and gray when it is disabled.
985
986 @item D
987 @kindex D @r{(GDB Breakpoints buffer)}
988 @findex gdb-delete-breakpoint
989 Delete the current breakpoint (@code{gdb-delete-breakpoint}).
990
991 @item @key{RET}
992 @kindex RET @r{(GDB Breakpoints buffer)}
993 @findex gdb-goto-breakpoint
994 Visit the source line for the current breakpoint
995 (@code{gdb-goto-breakpoint}).
996
997 @item Mouse-2
998 @kindex Mouse-2 @r{(GDB Breakpoints buffer)}
999 Visit the source line for the breakpoint you click on.
1000 @end table
1001
1002 @vindex gdb-show-threads-by-default
1003 When @code{gdb-many-windows} is non-@code{nil}, the GDB Breakpoints
1004 buffer shares its window with the GDB Threads buffer. To switch from
1005 one to the other click with @kbd{Mouse-1} on the relevant button in
1006 the header line. If @code{gdb-show-threads-by-default} is
1007 non-@code{nil}, the GDB Threads buffer is the one shown by default.
1008
1009 @node Threads Buffer
1010 @subsubsection Threads Buffer
1011
1012 @findex gdb-select-thread
1013 The GDB Threads buffer displays a summary of the threads in the
1014 debugged program. @xref{Threads, Threads, Debugging programs with
1015 multiple threads, gdb, The GNU debugger}. To select a thread, move
1016 point there and press @key{RET} (@code{gdb-select-thread}), or click on
1017 it with @kbd{Mouse-2}. This also displays the associated source
1018 buffer, and updates the contents of the other GDB buffers.
1019
1020 You can customize variables under @code{gdb-buffers} group to select
1021 fields included in GDB Threads buffer.
1022
1023 @table @code
1024 @item gdb-thread-buffer-verbose-names
1025 @vindex gdb-thread-buffer-verbose-names
1026 Show long thread names like @samp{Thread 0x4e2ab70 (LWP 1983)}.
1027
1028 @item gdb-thread-buffer-arguments
1029 @vindex gdb-thread-buffer-arguments
1030 Show arguments of thread top frames.
1031
1032 @item gdb-thread-buffer-locations
1033 @vindex gdb-thread-buffer-locations
1034 Show file information or library names.
1035
1036 @item gdb-thread-buffer-addresses
1037 @vindex gdb-thread-buffer-addresses
1038 Show addresses for thread frames in threads buffer.
1039 @end table
1040
1041 To view information for several threads simultaneously, use the
1042 following commands from the GDB Threads buffer.
1043
1044 @table @kbd
1045 @item d
1046 @kindex d @r{(GDB threads buffer)}
1047 @findex gdb-display-disassembly-for-thread
1048 Display disassembly buffer for the thread at current line
1049 (@code{gdb-display-disassembly-for-thread}).
1050
1051 @item f
1052 @kindex f @r{(GDB threads buffer)}
1053 @findex gdb-display-stack-for-thread
1054 Display the GDB Stack buffer for the thread at current line
1055 (@code{gdb-display-stack-for-thread}).
1056
1057 @item l
1058 @kindex l @r{(GDB threads buffer)}
1059 @findex gdb-display-locals-for-thread
1060 Display the GDB Locals buffer for the thread at current line
1061 (@code{gdb-display-locals-for-thread}).
1062
1063 @item r
1064 @kindex r @r{(GDB threads buffer)}
1065 @findex gdb-display-registers-for-thread
1066 Display the GDB Registers buffer for the thread at current line
1067 (@code{gdb-display-registers-for-thread}).
1068 @end table
1069
1070 @noindent
1071 Their upper-case counterparts, @kbd{D}, @kbd{F} ,@kbd{L} and @kbd{R},
1072 display the corresponding buffer in a new frame.
1073
1074 When you create a buffer showing information about some specific
1075 thread, it becomes bound to that thread and keeps showing actual
1076 information while you debug your program. The mode indicator for each
1077 GDB buffer shows the number of thread it is showing information about.
1078 The thread number is also included in the buffer name of bound
1079 buffers.
1080
1081 Further commands are available in the GDB Threads buffer which
1082 depend on the mode of GDB that is used for controlling execution of
1083 your program. @xref{Multithreaded Debugging}.
1084
1085 @node Stack Buffer
1086 @subsubsection Stack Buffer
1087
1088 The GDB Stack buffer displays a @dfn{call stack}, with one line for
1089 each of the nested subroutine calls (@dfn{stack frames}) in the
1090 debugger session. @xref{Backtrace,, Backtraces, gdb, The GNU
1091 debugger}.
1092
1093 @findex gdb-frames-select
1094 On graphical displays, the selected stack frame is indicated by an
1095 arrow in the fringe. On text terminals, or when fringes are disabled,
1096 the selected stack frame is displayed in reverse contrast. To select
1097 a stack frame, move point in its line and type @key{RET}
1098 (@code{gdb-frames-select}), or click @kbd{Mouse-2} on it. Doing so
1099 also updates the Locals buffer
1100 @ifnottex
1101 (@pxref{Other GDB Buffers}).
1102 @end ifnottex
1103 @iftex
1104 (described in the next section).
1105 @end iftex
1106
1107 @node Other GDB Buffers
1108 @subsubsection Other GDB Buffers
1109
1110 @table @asis
1111 @item Locals Buffer
1112 This buffer displays the values of local variables of the current
1113 frame for simple data types (@pxref{Frame Info, Frame Info,
1114 Information on a frame, gdb, The GNU debugger}). Press @key{RET} or
1115 click @kbd{Mouse-2} on the value if you want to edit it.
1116
1117 Arrays and structures display their type only. With GDB 6.4 or later,
1118 you can examine the value of the local variable at point by typing
1119 @key{RET}, or with a @kbd{Mouse-2} click. With earlier versions of
1120 GDB, use @key{RET} or @kbd{Mouse-2} on the type description
1121 (@samp{[struct/union]} or @samp{[array]}). @xref{Watch Expressions}.
1122
1123 @item Registers Buffer
1124 @findex toggle-gdb-all-registers
1125 This buffer displays the values held by the registers
1126 (@pxref{Registers,,, gdb, The GNU debugger}). Press @key{RET} or
1127 click @kbd{Mouse-2} on a register if you want to edit its value. With
1128 GDB 6.4 or later, recently changed register values display with
1129 @code{font-lock-warning-face}.
1130
1131 @item Assembler Buffer
1132 The assembler buffer displays the current frame as machine code. An
1133 arrow points to the current instruction, and you can set and remove
1134 breakpoints as in a source buffer. Breakpoint icons also appear in
1135 the fringe or margin.
1136
1137 @item Memory Buffer
1138 The memory buffer lets you examine sections of program memory
1139 (@pxref{Memory, Memory, Examining memory, gdb, The GNU debugger}).
1140 Click @kbd{Mouse-1} on the appropriate part of the header line to
1141 change the starting address or number of data items that the buffer
1142 displays. Alternatively, use @kbd{S} or @kbd{N} respectively. Click
1143 @kbd{Mouse-3} on the header line to select the display format or unit
1144 size for these data items.
1145 @end table
1146
1147 When @code{gdb-many-windows} is non-@code{nil}, the locals buffer
1148 shares its window with the registers buffer, just like breakpoints and
1149 threads buffers. To switch from one to the other, click with
1150 @kbd{Mouse-1} on the relevant button in the header line.
1151
1152 @node Watch Expressions
1153 @subsubsection Watch Expressions
1154 @cindex Watching expressions in GDB
1155
1156 @findex gud-watch
1157 @kindex C-x C-a C-w @r{(GUD)}
1158 If you want to see how a variable changes each time your program
1159 stops, move point into the variable name and click on the watch icon
1160 in the tool bar (@code{gud-watch}) or type @kbd{C-x C-a C-w}. If you
1161 specify a prefix argument, you can enter the variable name in the
1162 minibuffer.
1163
1164 Each watch expression is displayed in the speedbar
1165 (@pxref{Speedbar}). Complex data types, such as arrays, structures
1166 and unions are represented in a tree format. Leaves and simple data
1167 types show the name of the expression and its value and, when the
1168 speedbar frame is selected, display the type as a tooltip. Higher
1169 levels show the name, type and address value for pointers and just the
1170 name and type otherwise. Root expressions also display the frame
1171 address as a tooltip to help identify the frame in which they were
1172 defined.
1173
1174 To expand or contract a complex data type, click @kbd{Mouse-2} or
1175 press @key{SPC} on the tag to the left of the expression. Emacs asks
1176 for confirmation before expanding the expression if its number of
1177 immediate children exceeds the value of the variable
1178 @code{gdb-max-children}.
1179
1180 @kindex D @r{(GDB speedbar)}
1181 @findex gdb-var-delete
1182 To delete a complex watch expression, move point to the root
1183 expression in the speedbar and type @kbd{D} (@code{gdb-var-delete}).
1184
1185 @kindex RET @r{(GDB speedbar)}
1186 @findex gdb-edit-value
1187 To edit a variable with a simple data type, or a simple element of a
1188 complex data type, move point there in the speedbar and type @key{RET}
1189 (@code{gdb-edit-value}). Or you can click @kbd{Mouse-2} on a value to
1190 edit it. Either way, this reads the new value using the minibuffer.
1191
1192 @vindex gdb-show-changed-values
1193 If you set the variable @code{gdb-show-changed-values} to
1194 non-@code{nil} (the default value), Emacs uses
1195 @code{font-lock-warning-face} to highlight values that have recently
1196 changed and @code{shadow} face to make variables which have gone out of
1197 scope less noticeable. When a variable goes out of scope you can't
1198 edit its value.
1199
1200 @vindex gdb-delete-out-of-scope
1201 If the variable @code{gdb-delete-out-of-scope} is non-@code{nil}
1202 (the default value), Emacs automatically deletes watch expressions
1203 which go out of scope. Sometimes, when re-entering the same function,
1204 it may be useful to set this value to @code{nil} so that you don't
1205 need to recreate the watch expression.
1206
1207 @vindex gdb-use-colon-colon-notation
1208 If the variable @code{gdb-use-colon-colon-notation} is
1209 non-@code{nil}, Emacs uses the @samp{@var{function}::@var{variable}}
1210 format. This allows the user to display watch expressions which share
1211 the same variable name. The default value is @code{nil}.
1212
1213 @vindex gdb-speedbar-auto-raise
1214 To automatically raise the speedbar every time the display of watch
1215 expressions updates, set @code{gdb-speedbar-auto-raise} to
1216 non-@code{nil}. This can be useful if you are debugging with a full
1217 screen Emacs frame.
1218
1219 @node Multithreaded Debugging
1220 @subsubsection Multithreaded Debugging
1221 @cindex Multithreaded debugging in GDB
1222 @cindex Non-stop debugging in GDB
1223
1224 In GDB's @dfn{all-stop mode}, whenever your program stops, all
1225 execution threads stop. Likewise, whenever you restart the program,
1226 all threads start executing. @xref{All-Stop Mode, , All-Stop Mode,
1227 gdb, The GNU debugger}. For some multi-threaded targets, GDB supports
1228 a further mode of operation, called @dfn{non-stop mode}, in which you
1229 can examine stopped program threads in the debugger while other
1230 threads continue to execute freely. @xref{Non-Stop Mode, , Non-Stop
1231 Mode, gdb, The GNU debugger}. Versions of GDB prior to 7.0 do not
1232 support non-stop mode, and it does not work on all targets.
1233
1234 @vindex gdb-non-stop-setting
1235 The variable @code{gdb-non-stop-setting} determines whether Emacs
1236 runs GDB in all-stop mode or non-stop mode. The default is @code{t},
1237 which means it tries to use non-stop mode if that is available. If
1238 you change the value to @code{nil}, or if non-stop mode is
1239 unavailable, Emacs runs GDB in all-stop mode. The variable takes
1240 effect when Emacs begins a debugging session; if you change its value,
1241 you should restart any active debugging session.
1242
1243 @vindex gdb-switch-when-another-stopped
1244 When a thread stops in non-stop mode, Emacs usually switches to that
1245 thread. If you don't want Emacs to do this switch if another stopped
1246 thread is already selected, change the variable
1247 @code{gdb-switch-when-another-stopped} to @code{nil}.
1248
1249 @vindex gdb-switch-reasons
1250 Emacs can decide whether or not to switch to the stopped thread
1251 depending on the reason which caused the stop. Customize the variable
1252 @code{gdb-switch-reasons} to select the stop reasons which will cause
1253 a thread switch.
1254
1255 @vindex gdb-stopped-functions
1256 The variable @code{gdb-stopped-functions} allows you to execute your
1257 functions whenever some thread stops.
1258
1259 In non-stop mode, you can switch between different modes for GUD
1260 execution control commands.
1261
1262 @vindex gdb-gud-control-all-threads
1263 @table @dfn
1264 @item Non-stop/A
1265
1266 When @code{gdb-gud-control-all-threads} is @code{t} (the default
1267 value), interruption and continuation commands apply to all threads,
1268 so you can halt or continue all your threads with one command using
1269 @code{gud-stop-subjob} and @code{gud-cont}, respectively. The
1270 @samp{Go} button is shown on the toolbar when at least one thread is
1271 stopped, whereas @samp{Stop} button is shown when at least one thread
1272 is running.
1273
1274 @item Non-stop/T
1275
1276 When @code{gdb-gud-control-all-threads} is @code{nil}, only the
1277 current thread is stopped/continued. @samp{Go} and @samp{Stop}
1278 buttons on the GUD toolbar are shown depending on the state of current
1279 thread.
1280 @end table
1281
1282 You can change the current value of @code{gdb-gud-control-all-threads}
1283 from the tool bar or from @samp{GUD->GDB-MI} menu.
1284
1285 Stepping commands always apply to the current thread.
1286
1287 In non-stop mode, you can interrupt/continue your threads without
1288 selecting them. Hitting @kbd{i} in threads buffer interrupts thread
1289 under point, @kbd{c} continues it, @kbd{s} steps through. More such
1290 commands may be added in the future.
1291
1292 Note that when you interrupt a thread, it stops with the
1293 @samp{signal received} reason. If that reason is included in your
1294 @code{gdb-switch-reasons} (it is by default), Emacs will switch to
1295 that thread.
1296
1297 @node Executing Lisp
1298 @section Executing Lisp Expressions
1299
1300 Emacs has major modes for several variants of Lisp. They use the
1301 same editing commands as other programming language modes
1302 (@pxref{Programs}). In addition, they provide special commands for
1303 executing Lisp expressions.
1304
1305 @table @asis
1306 @item Emacs Lisp mode
1307 The mode for editing Emacs Lisp source files. It defines @kbd{C-M-x}
1308 to evaluate the current top-level Lisp expression. @xref{Lisp Eval}.
1309
1310 @item Lisp Interaction mode
1311 The mode for an interactive Emacs Lisp session. It defines @kbd{C-j}
1312 to evaluate the expression before point and insert its value in the
1313 buffer. @xref{Lisp Interaction}.
1314
1315 @item Lisp mode
1316 The mode for editing source files of programs that run in Lisps other
1317 than Emacs Lisp. It defines @kbd{C-M-x} to evaluate the current
1318 top-level expression in an external Lisp. @xref{External Lisp}.
1319
1320 @item Inferior Lisp mode
1321 The mode for an interactive session with an external Lisp which is
1322 being run as a subprocess (or @dfn{inferior process}) of Emacs.
1323 @ifnottex
1324 @xref{External Lisp}.
1325 @end ifnottex
1326
1327 @item Scheme mode
1328 Like Lisp mode, but for Scheme programs.
1329
1330 @item Inferior Scheme mode
1331 Like Inferior Lisp mode, but for Scheme.
1332 @end table
1333
1334 @node Lisp Libraries
1335 @section Libraries of Lisp Code for Emacs
1336 @cindex libraries
1337 @cindex loading Lisp code
1338
1339 Emacs Lisp code is stored in files whose names conventionally end in
1340 @file{.el}. Such files are automatically visited in Emacs Lisp mode.
1341
1342 @cindex byte code
1343 Emacs Lisp code can be compiled into byte-code, which loads faster,
1344 takes up less space, and executes faster. By convention, compiled
1345 Emacs Lisp code goes in a separate file whose name ends in
1346 @samp{.elc}. For example, the compiled code for @file{foo.el} goes in
1347 @file{foo.elc}. @xref{Byte Compilation,, Byte Compilation, elisp, the
1348 Emacs Lisp Reference Manual}.
1349
1350 @findex load-file
1351 To @dfn{load} an Emacs Lisp file, type @kbd{M-x load-file}. This
1352 command reads a file name using the minibuffer, and executes the
1353 contents of that file as Emacs Lisp code. It is not necessary to
1354 visit the file first; this command reads the file directly from disk,
1355 not from an existing Emacs buffer.
1356
1357 @findex load
1358 @findex load-library
1359 @vindex load-prefer-newer
1360 @cindex load path for Emacs Lisp
1361 If an Emacs Lisp file is installed in the Emacs Lisp @dfn{load path}
1362 (defined below), you can load it by typing @kbd{M-x load-library},
1363 instead of using @kbd{M-x load-file}. The @kbd{M-x load-library}
1364 command prompts for a @dfn{library name} rather than a file name; it
1365 searches through each directory in the Emacs Lisp load path, trying to
1366 find a file matching that library name. If the library name is
1367 @samp{@var{foo}}, it tries looking for files named
1368 @file{@var{foo}.elc}, @file{@var{foo}.el}, and @file{@var{foo}}. The
1369 default behavior is to load the first file found. This command
1370 prefers @file{.elc} files over @file{.el} files because compiled files
1371 load and run faster. If it finds that @file{@var{lib}.el} is newer
1372 than @file{@var{lib}.elc}, it issues a warning, in case someone made
1373 changes to the @file{.el} file and forgot to recompile it, but loads
1374 the @file{.elc} file anyway. (Due to this behavior, you can save
1375 unfinished edits to Emacs Lisp source files, and not recompile until
1376 your changes are ready for use.) If you set the option
1377 @code{load-prefer-newer} to a non-@code{nil} value, however, then
1378 rather than the procedure described above, Emacs loads whichever
1379 version of the file is newest.
1380
1381 Emacs Lisp programs usually load Emacs Lisp files using the
1382 @code{load} function. This is similar to @code{load-library}, but is
1383 lower-level and accepts additional arguments. @xref{How Programs Do
1384 Loading,,, elisp, the Emacs Lisp Reference Manual}.
1385
1386 @vindex load-path
1387 The Emacs Lisp load path is specified by the variable
1388 @code{load-path}. Its value should be a list of directory names
1389 (strings). These directories are searched, in the specified order, by
1390 the @kbd{M-x load-library} command, the lower-level @code{load}
1391 function, and other Emacs functions that find Emacs Lisp libraries. A
1392 list entry in @code{load-path} can also have the special value
1393 @code{nil}, which stands for the current default directory, but it is
1394 almost always a bad idea to use this. (If you find yourself wishing
1395 that @code{nil} were in the list, most likely what you really want is
1396 to use @kbd{M-x load-file}.)
1397
1398 The default value of @code{load-path} is a list of directories where
1399 the Lisp code for Emacs itself is stored. If you have libraries of
1400 your own in another directory, you can add that directory to the load
1401 path. Unlike most other variables described in this manual,
1402 @code{load-path} cannot be changed via the Customize interface
1403 (@pxref{Easy Customization}), but you can add a directory to it by
1404 putting a line like this in your init file (@pxref{Init File}):
1405
1406 @example
1407 (add-to-list 'load-path "/path/to/my/lisp/library")
1408 @end example
1409
1410 @cindex autoload
1411 Some commands are @dfn{autoloaded}; when you run them, Emacs
1412 automatically loads the associated library first. For instance, the
1413 @kbd{M-x compile} command (@pxref{Compilation}) is autoloaded; if you
1414 call it, Emacs automatically loads the @code{compile} library first.
1415 In contrast, the command @kbd{M-x recompile} is not autoloaded, so it
1416 is unavailable until you load the @code{compile} library.
1417
1418 @vindex help-enable-auto-load
1419 Automatic loading can also occur when you look up the documentation
1420 of an autoloaded command (@pxref{Name Help}), if the documentation
1421 refers to other functions and variables in its library (loading the
1422 library lets Emacs properly set up the hyperlinks in the @file{*Help*}
1423 buffer). To disable this feature, change the variable
1424 @code{help-enable-auto-load} to @code{nil}.
1425
1426 @vindex load-dangerous-libraries
1427 @cindex Lisp files byte-compiled by XEmacs
1428 By default, Emacs refuses to load compiled Lisp files which were
1429 compiled with XEmacs, a modified versions of Emacs---they can cause
1430 Emacs to crash. Set the variable @code{load-dangerous-libraries} to
1431 @code{t} if you want to try loading them.
1432
1433 @node Lisp Eval
1434 @section Evaluating Emacs Lisp Expressions
1435 @cindex Emacs Lisp mode
1436 @cindex mode, Emacs Lisp
1437 @cindex evaluation, Emacs Lisp
1438
1439 @findex emacs-lisp-mode
1440 Emacs Lisp mode is the major mode for editing Emacs Lisp. Its mode
1441 command is @kbd{M-x emacs-lisp-mode}.
1442
1443 Emacs provides several commands for evaluating Emacs Lisp
1444 expressions. You can use these commands in Emacs Lisp mode, to test
1445 your Emacs Lisp code as it is being written. For example, after
1446 re-writing a function, you can evaluate the function definition to
1447 make it take effect for subsequent function calls. These commands are
1448 also available globally, and can be used outside Emacs Lisp mode.
1449
1450 @table @asis
1451 @item @kbd{M-:}
1452 Read a single Emacs Lisp expression in the minibuffer, evaluate it,
1453 and print the value in the echo area (@code{eval-expression}).
1454 @item @kbd{C-x C-e}
1455 Evaluate the Emacs Lisp expression before point, and print the value
1456 in the echo area (@code{eval-last-sexp}).
1457 @item @kbd{C-M-x} @r{(in Emacs Lisp mode)}
1458 @itemx @kbd{M-x eval-defun}
1459 Evaluate the defun containing or after point, and print the value in
1460 the echo area (@code{eval-defun}).
1461 @item @kbd{M-x eval-region}
1462 Evaluate all the Emacs Lisp expressions in the region.
1463 @item @kbd{M-x eval-buffer}
1464 Evaluate all the Emacs Lisp expressions in the buffer.
1465 @end table
1466
1467 @ifinfo
1468 @c This uses 'colon' instead of a literal ':' because Info cannot
1469 @c cope with a ':' in a menu.
1470 @kindex M-@key{colon}
1471 @end ifinfo
1472 @ifnotinfo
1473 @kindex M-:
1474 @end ifnotinfo
1475 @findex eval-expression
1476 @kbd{M-:} (@code{eval-expression}) reads an expression using the
1477 minibuffer, and evaluates it. (Before evaluating the expression, the
1478 current buffer switches back to the buffer that was current when you
1479 typed @kbd{M-:}, not the minibuffer into which you typed the
1480 expression.)
1481
1482 @kindex C-x C-e
1483 @findex eval-last-sexp
1484 The command @kbd{C-x C-e} (@code{eval-last-sexp}) evaluates the
1485 Emacs Lisp expression preceding point in the buffer, and displays the
1486 value in the echo area. When the result of an evaluation is an
1487 integer, it is displayed together with the value in other formats
1488 (octal, hexadecimal, and character).
1489
1490 If @kbd{M-:} or @kbd{C-x C-e} is given a prefix argument, it inserts
1491 the value into the current buffer at point, rather than displaying it
1492 in the echo area. If the prefix argument is zero, any integer output
1493 is inserted together with its value in other formats (octal,
1494 hexadecimal, and character). Such a prefix argument also prevents
1495 abbreviation of the output according to the variables
1496 @code{eval-expression-print-level} and @code{eval-expression-print-length}
1497 (see below).
1498
1499 @kindex C-M-x @r{(Emacs Lisp mode)}
1500 @findex eval-defun
1501 The @code{eval-defun} command is bound to @kbd{C-M-x} in Emacs Lisp
1502 mode. It evaluates the top-level Lisp expression containing or
1503 following point, and prints the value in the echo area. In this
1504 context, a top-level expression is referred to as a ``defun'', but it
1505 need not be an actual @code{defun} (function definition). In
1506 particular, this command treats @code{defvar} expressions specially.
1507 Normally, evaluating a @code{defvar} expression does nothing if the
1508 variable it defines already has a value. But this command
1509 unconditionally resets the variable to the initial value specified by
1510 the @code{defvar}; this is convenient for debugging Emacs Lisp
1511 programs. @code{defcustom} and @code{defface} expressions are treated
1512 similarly. Note that the other commands documented in this section do
1513 not have this special feature.
1514
1515 With a prefix argument, @kbd{C-M-x} instruments the function
1516 definition for Edebug, the Emacs Lisp Debugger. @xref{Instrumenting,
1517 Instrumenting for Edebug,, elisp, the Emacs Lisp Reference Manual}.
1518
1519 @findex eval-region
1520 @findex eval-buffer
1521 The command @kbd{M-x eval-region} parses the text of the region as
1522 one or more Lisp expressions, evaluating them one by one. @kbd{M-x
1523 eval-buffer} is similar but evaluates the entire buffer.
1524
1525 @vindex eval-expression-print-level
1526 @vindex eval-expression-print-length
1527 @vindex eval-expression-debug-on-error
1528 The options @code{eval-expression-print-level} and
1529 @code{eval-expression-print-length} control the maximum depth and
1530 length of lists to print in the result of the evaluation commands
1531 before abbreviating them. Supplying a zero prefix argument to
1532 @code{eval-expression} or @code{eval-last-sexp} causes lists to be
1533 printed in full. @code{eval-expression-debug-on-error} controls
1534 whether evaluation errors invoke the debugger when these commands are
1535 used; its default is @code{t}.
1536
1537 @node Lisp Interaction
1538 @section Lisp Interaction Buffers
1539
1540 @findex lisp-interaction-mode
1541 When Emacs starts up, it contains a buffer named @file{*scratch*},
1542 which is provided for evaluating Emacs Lisp expressions interactively.
1543 Its major mode is Lisp Interaction mode. You can also enable Lisp
1544 Interaction mode by typing @kbd{M-x lisp-interaction-mode}.
1545
1546 @findex eval-print-last-sexp
1547 @kindex C-j @r{(Lisp Interaction mode)}
1548 In the @file{*scratch*} buffer, and other Lisp Interaction mode
1549 buffers, @kbd{C-j} (@code{eval-print-last-sexp}) evaluates the Lisp
1550 expression before point, and inserts the value at point. Thus, as you
1551 type expressions into the buffer followed by @kbd{C-j} after each
1552 expression, the buffer records a transcript of the evaluated
1553 expressions and their values. All other commands in Lisp Interaction
1554 mode are the same as in Emacs Lisp mode.
1555
1556 @vindex initial-scratch-message
1557 At startup, the @file{*scratch*} buffer contains a short message, in
1558 the form of a Lisp comment, that explains what it is for. This
1559 message is controlled by the variable @code{initial-scratch-message},
1560 which should be either a documentation string, or @code{nil} (which means to
1561 suppress the message).
1562
1563 @findex ielm
1564 An alternative way of evaluating Emacs Lisp expressions
1565 interactively is to use Inferior Emacs Lisp mode, which provides an
1566 interface rather like Shell mode (@pxref{Shell Mode}) for evaluating
1567 Emacs Lisp expressions. Type @kbd{M-x ielm} to create an
1568 @file{*ielm*} buffer which uses this mode. For more information, see
1569 that command's documentation.
1570
1571 @node External Lisp
1572 @section Running an External Lisp
1573 @cindex Lisp mode
1574 @cindex mode, Lisp
1575 @cindex Common Lisp
1576
1577 Lisp mode is the major mode for editing programs written in
1578 general-purpose Lisp dialects, such as Common Lisp. Its mode command
1579 is @kbd{M-x lisp-mode}. Emacs uses Lisp mode automatically for files
1580 whose names end in @file{.l}, @file{.lsp}, or @file{.lisp}.
1581
1582 @findex run-lisp
1583 @vindex inferior-lisp-program
1584 @kindex C-x C-z
1585 You can run an external Lisp session as a subprocess or
1586 @dfn{inferior process} of Emacs, and pass expressions to it to be
1587 evaluated. To begin an external Lisp session, type @kbd{M-x
1588 run-lisp}. This runs the program named @command{lisp}, and sets it up
1589 so that both input and output go through an Emacs buffer named
1590 @file{*inferior-lisp*}. To change the name of the Lisp program run by
1591 @kbd{M-x run-lisp}, change the variable @code{inferior-lisp-program}.
1592
1593 The major mode for the @file{*lisp*} buffer is Inferior Lisp mode,
1594 which combines the characteristics of Lisp mode and Shell mode
1595 (@pxref{Shell Mode}). To send input to the Lisp session, go to the
1596 end of the @file{*lisp*} buffer and type the input, followed by
1597 @key{RET}. Terminal output from the Lisp session is automatically
1598 inserted in the buffer.
1599
1600 @kindex C-M-x @r{(Lisp mode)}
1601 @findex lisp-eval-defun
1602 When you edit a Lisp program in Lisp mode, you can type @kbd{C-M-x}
1603 (@code{lisp-eval-defun}) to send an expression from the Lisp mode
1604 buffer to a Lisp session that you had started with @kbd{M-x run-lisp}.
1605 The expression sent is the top-level Lisp expression at or following
1606 point. The resulting value goes as usual into the
1607 @file{*inferior-lisp*} buffer. Note that the effect of @kbd{C-M-x} in
1608 Lisp mode is thus very similar to its effect in Emacs Lisp mode
1609 (@pxref{Lisp Eval}), except that the expression is sent to a different
1610 Lisp environment instead of being evaluated in Emacs.
1611
1612 @findex scheme-mode
1613 @findex run-scheme
1614 @cindex Scheme mode
1615 @cindex mode, Scheme
1616 @kindex C-M-x @r{(Scheme mode)}
1617 The facilities for editing Scheme code, and for sending expressions
1618 to a Scheme subprocess, are very similar. Scheme source files are
1619 edited in Scheme mode, which can be explicitly enabled with @kbd{M-x
1620 scheme-mode}. You can initiate a Scheme session by typing @kbd{M-x
1621 run-scheme} (the buffer for interacting with Scheme is named
1622 @file{*scheme*}), and send expressions to it by typing @kbd{C-M-x}.