Mercurial > emacs
annotate man/building.texi @ 67313:2ae99b10dd40
* mh-comp.el (mh-forward): Went over all uses of the word "RANGE" in
the docstrings and made usage consistent. Generally speaking,
"messages in range" and "range of messages" is redundant and just
"range" can be used in most circumstances. Also ensured that
mh-interactive-range was mentioned in all interactive functions that
use a range which describes the range argument for both users and
programmers.
* mh-e.el (mh-delete-msg-no-motion, mh-refile-msg)
(mh-refile-or-write-again, mh-rescan-folder, mh-undo)
(mh-visit-folder, mh-scan-folder, mh-regenerate-headers)
(mh-notate-user-sequences, mh-delete-msg-from-seq, mh-catchup): Ditto.
* mh-funcs.el (mh-copy-msg, mh-pack-folder, mh-pack-folder-1): Ditto.
* mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Ditto.
* mh-print.el (mh-ps-print-range, mh-ps-print-msg)
(mh-ps-print-msg-file, mh-print-msg): Ditto.
* mh-seq.el (mh-put-msg-in-seq, mh-range-to-msg-list)
(mh-narrow-to-range, mh-toggle-tick): Ditto.
author | Bill Wohler <wohler@newt.com> |
---|---|
date | Sun, 04 Dec 2005 22:34:49 +0000 |
parents | c0926bb237e2 |
children | de2840a4a2d9 |
rev | line source |
---|---|
25829 | 1 @c This is part of the Emacs manual. |
64890
3723093a21fd
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64868
diff
changeset
|
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, |
3723093a21fd
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64868
diff
changeset
|
3 @c 2002, 2003, 2004, 2005 Free Software Foundation, Inc. |
25829 | 4 @c See file emacs.texi for copying conditions. |
38202 | 5 @node Building, Maintaining, Programs, Top |
25829 | 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 for | |
12 making changes in programs. This chapter deals with commands that assist | |
13 in the larger process of developing and maintaining 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. | |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
21 * Grep Searching:: Searching with grep. |
61050 | 22 * Flymake:: Finding syntax errors on the fly. |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49062
diff
changeset
|
23 * Debuggers:: Running symbolic debuggers for non-Lisp programs. |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49062
diff
changeset
|
24 * Executing Lisp:: Various modes for editing Lisp programs, |
25829 | 25 with different facilities for running |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49062
diff
changeset
|
26 the Lisp programs. |
25829 | 27 * Libraries: Lisp Libraries. Creating Lisp programs to run in Emacs. |
56808
00b9078008ef
(Building): Interchange nodes (for correct numbering).
Luc Teirlinck <teirllm@auburn.edu>
parents:
56007
diff
changeset
|
28 * Eval: Lisp Eval. Executing a single Lisp expression in Emacs. |
25829 | 29 * Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer. |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49062
diff
changeset
|
30 * External Lisp:: Communicating through Emacs with a separate Lisp. |
25829 | 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 noninteractive languages such as C and | |
41 Fortran as inferior processes, feeding the error log into an Emacs buffer. | |
42 It can also parse the error messages and show you the source lines where | |
43 compilation errors occurred. | |
44 | |
45 @table @kbd | |
46 @item M-x compile | |
37482
4b43d9f652aa
Correct typo on pdb-mode-hook.
Richard M. Stallman <rms@gnu.org>
parents:
37346
diff
changeset
|
47 Run a compiler asynchronously under Emacs, with error messages going to |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
48 the @samp{*compilation*} buffer. |
39820
f0947afcdf4c
(Compilation): Document "M-x recompile".
Eli Zaretskii <eliz@gnu.org>
parents:
39287
diff
changeset
|
49 @item M-x recompile |
f0947afcdf4c
(Compilation): Document "M-x recompile".
Eli Zaretskii <eliz@gnu.org>
parents:
39287
diff
changeset
|
50 Invoke a compiler with the same command as in the last invocation of |
f0947afcdf4c
(Compilation): Document "M-x recompile".
Eli Zaretskii <eliz@gnu.org>
parents:
39287
diff
changeset
|
51 @kbd{M-x compile}. |
25829 | 52 @item M-x kill-compilation |
64949
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
53 Kill the running compilation subprocess. |
25829 | 54 @end table |
55 | |
56 @findex compile | |
57 To run @code{make} or another compilation command, do @kbd{M-x | |
58 compile}. This command reads a shell command line using the minibuffer, | |
59 and then executes the command in an inferior shell, putting output in | |
60 the buffer named @samp{*compilation*}. The current buffer's default | |
61 directory is used as the working directory for the execution of the | |
62 command; normally, therefore, the compilation happens in this | |
63 directory. | |
64 | |
65 @vindex compile-command | |
66133
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
66 The default for the compilation command is normally @samp{make -k}, |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
67 which is correct most of the time for nontrivial programs. |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
68 (@xref{Top,, Make, make, GNU Make Manual}.) If you have done @kbd{M-x |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
69 compile} before, the default each time is the command you used the |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
70 previous time. @code{compile} stores this command in the variable |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
71 @code{compile-command}, so setting that variable specifies the default |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
72 for the next use of @kbd{M-x compile}. If a file specifies a file |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
73 local value for @code{compile-command}, that provides the default when |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
74 you type @kbd{M-x compile} in that file's buffer. @xref{File |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
75 Variables}. |
25829 | 76 |
77 Starting a compilation displays the buffer @samp{*compilation*} in | |
60278
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
78 another window but does not select it. The buffer's mode line tells |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
79 you whether compilation is finished, with the word @samp{run}, |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
80 @samp{signal} or @samp{exit} inside the parentheses. You do not have |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
81 to keep this buffer visible; compilation continues in any case. While |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
82 a compilation is going on, the string @samp{Compiling} appears in the |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
83 mode lines of all windows. When this string disappears, the |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
84 compilation is finished. |
25829 | 85 |
86 If you want to watch the compilation transcript as it appears, switch | |
87 to the @samp{*compilation*} buffer and move point to the end of the | |
88 buffer. When point is at the end, new compilation output is inserted | |
89 above point, which remains at the end. If point is not at the end of | |
90 the buffer, it remains fixed while more compilation output is added at | |
91 the end of the buffer. | |
92 | |
34935
390058c38d27
Add a cindex entry for compilation-scroll-output. Duplicate the variable's
Eli Zaretskii <eliz@gnu.org>
parents:
31027
diff
changeset
|
93 @cindex compilation buffer, keeping current position at the end |
25829 | 94 @vindex compilation-scroll-output |
95 If you set the variable @code{compilation-scroll-output} to a | |
96 non-@code{nil} value, then the compilation buffer always scrolls to | |
97 follow output as it comes in. | |
98 | |
99 @findex kill-compilation | |
51791
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
100 When the compiler process terminates, for whatever reason, the mode |
60278
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
101 line of the @samp{*compilation*} buffer changes to say @samp{exit} |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
102 (followed by the exit code, @samp{[0]} for a normal exit), or |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
103 @samp{signal} (if a signal terminated the process), instead of |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
104 @samp{run}. Starting a new compilation also kills any running |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
105 compilation, as only one can exist at any time. However, @kbd{M-x |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
106 compile} asks for confirmation before actually killing a compilation |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
107 that is running. You can also kill the compilation process with |
f69c04fae9ff
(Compilation): Update mode line status info.
Richard M. Stallman <rms@gnu.org>
parents:
59825
diff
changeset
|
108 @kbd{M-x kill-compilation}. |
25829 | 109 |
39820
f0947afcdf4c
(Compilation): Document "M-x recompile".
Eli Zaretskii <eliz@gnu.org>
parents:
39287
diff
changeset
|
110 @findex recompile |
f0947afcdf4c
(Compilation): Document "M-x recompile".
Eli Zaretskii <eliz@gnu.org>
parents:
39287
diff
changeset
|
111 To rerun the last compilation with the same command, type @kbd{M-x |
62221
ebb9e325798e
(Compilation): Clarify recompile's directory choice.
Richard M. Stallman <rms@gnu.org>
parents:
62171
diff
changeset
|
112 recompile}. This automatically reuses the compilation command from |
ebb9e325798e
(Compilation): Clarify recompile's directory choice.
Richard M. Stallman <rms@gnu.org>
parents:
62171
diff
changeset
|
113 the last invocation of @kbd{M-x compile}. It also reuses the |
ebb9e325798e
(Compilation): Clarify recompile's directory choice.
Richard M. Stallman <rms@gnu.org>
parents:
62171
diff
changeset
|
114 @samp{*compilation*} buffer and starts the compilation in its default |
ebb9e325798e
(Compilation): Clarify recompile's directory choice.
Richard M. Stallman <rms@gnu.org>
parents:
62171
diff
changeset
|
115 directory, which is the directory in which the previous compilation |
ebb9e325798e
(Compilation): Clarify recompile's directory choice.
Richard M. Stallman <rms@gnu.org>
parents:
62171
diff
changeset
|
116 was started. |
39820
f0947afcdf4c
(Compilation): Document "M-x recompile".
Eli Zaretskii <eliz@gnu.org>
parents:
39287
diff
changeset
|
117 |
51791
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
118 Emacs does not expect a compiler process to launch asynchronous |
46362
36ac28961e4f
Say that output from asynch subprocesses of a compiler may be lost.
Richard M. Stallman <rms@gnu.org>
parents:
46238
diff
changeset
|
119 subprocesses; if it does, and they keep running after the main |
51791
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
120 compiler process has terminated, Emacs may kill them or their output |
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
121 may not arrive in Emacs. To avoid this problem, make the main process |
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
122 wait for its subprocesses to finish. In a shell script, you can do this |
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
123 using @samp{$!} and @samp{wait}, like this: |
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
124 |
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
125 @example |
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
126 (sleep 10; echo 2nd)& pid=$! # @r{Record pid of subprocess} |
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
127 echo first message |
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
128 wait $pid # @r{Wait for subprocess} |
2488d95d6eaa
(Compilation): Document what happens with asynch children of compiler process.
Richard M. Stallman <rms@gnu.org>
parents:
51296
diff
changeset
|
129 @end example |
46362
36ac28961e4f
Say that output from asynch subprocesses of a compiler may be lost.
Richard M. Stallman <rms@gnu.org>
parents:
46238
diff
changeset
|
130 |
57154
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
131 If the background process does not output to the compilation buffer, |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
132 so you only need to prevent it from being killed when the main |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
133 compilation process terminates, this is sufficient: |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
134 |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
135 @example |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
136 nohup @var{command}; sleep 1 |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
137 @end example |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
138 |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
139 @vindex compilation-environment |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
140 You can control the environment passed to the compilation command |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
141 with the variable @code{compilation-environment}. Its value is a list |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
142 of environment variable settings; each element should be a string of |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
143 the form @code{"@var{envvarname}=@var{value}"}. These environment |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
144 variable settings override the usual ones. |
fe97fe43464a
(Compilation): Explain how to make a silent subprocess that won't be
Richard M. Stallman <rms@gnu.org>
parents:
56873
diff
changeset
|
145 |
25829 | 146 @node Compilation Mode |
147 @section Compilation Mode | |
148 | |
149 @findex compile-goto-error | |
150 @cindex Compilation mode | |
151 @cindex mode, Compilation | |
152 The @samp{*compilation*} buffer uses a special major mode, Compilation | |
153 mode, whose main feature is to provide a convenient way to look at the | |
154 source line where the error happened. | |
155 | |
156 @table @kbd | |
61652
91e895711c2e
(Compilation Mode): Add M-g M-n and M-g M-p bindings.
Kim F. Storm <storm@cua.dk>
parents:
61050
diff
changeset
|
157 @item M-g M-n |
91e895711c2e
(Compilation Mode): Add M-g M-n and M-g M-p bindings.
Kim F. Storm <storm@cua.dk>
parents:
61050
diff
changeset
|
158 @itemx M-g n |
91e895711c2e
(Compilation Mode): Add M-g M-n and M-g M-p bindings.
Kim F. Storm <storm@cua.dk>
parents:
61050
diff
changeset
|
159 @itemx C-x ` |
25829 | 160 Visit the locus of the next compiler error message or @code{grep} match. |
61652
91e895711c2e
(Compilation Mode): Add M-g M-n and M-g M-p bindings.
Kim F. Storm <storm@cua.dk>
parents:
61050
diff
changeset
|
161 @item M-g M-p |
91e895711c2e
(Compilation Mode): Add M-g M-n and M-g M-p bindings.
Kim F. Storm <storm@cua.dk>
parents:
61050
diff
changeset
|
162 @itemx M-g p |
91e895711c2e
(Compilation Mode): Add M-g M-n and M-g M-p bindings.
Kim F. Storm <storm@cua.dk>
parents:
61050
diff
changeset
|
163 Visit the locus of the previous compiler error message or @code{grep} match. |
25829 | 164 @item @key{RET} |
165 Visit the locus of the error message that point is on. | |
166 This command is used in the compilation buffer. | |
167 @item Mouse-2 | |
168 Visit the locus of the error message that you click on. | |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
169 @item M-n |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
170 Find and highlight the locus of the next error message, without |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
171 selecting the source buffer. |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
172 @item M-p |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
173 Find and highlight the locus of the previous error message, without |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
174 selecting the source buffer. |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
175 @item M-@} |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
176 Move point to the next error for a different file than the current |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
177 one. |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
178 @item M-@{ |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
179 Move point to the previous error for a different file than the current |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
180 one. |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
181 @item C-c C-f |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
182 Toggle Next Error Follow minor mode, which makes cursor motion in the |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
183 compilation buffer produce automatic source display. |
25829 | 184 @end table |
185 | |
61652
91e895711c2e
(Compilation Mode): Add M-g M-n and M-g M-p bindings.
Kim F. Storm <storm@cua.dk>
parents:
61050
diff
changeset
|
186 @kindex M-g M-n |
91e895711c2e
(Compilation Mode): Add M-g M-n and M-g M-p bindings.
Kim F. Storm <storm@cua.dk>
parents:
61050
diff
changeset
|
187 @kindex M-g n |
25829 | 188 @kindex C-x ` |
189 @findex next-error | |
190 You can visit the source for any particular error message by moving | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
191 point in the @samp{*compilation*} buffer to that error message and |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
192 typing @key{RET} (@code{compile-goto-error}). Alternatively, you can |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
193 click @kbd{Mouse-2} on the error message; you need not switch to the |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
194 @samp{*compilation*} buffer first. |
25829 | 195 |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
196 @vindex next-error-highlight |
25829 | 197 To parse the compiler error messages sequentially, type @kbd{C-x `} |
198 (@code{next-error}). The character following the @kbd{C-x} is the | |
199 backquote or ``grave accent,'' not the single-quote. This command is | |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
200 available in all buffers, not just in @samp{*compilation*}; it |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
201 displays the next error message at the top of one window and source |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
202 location of the error in another window. It also momentarily |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
203 highlights the relevant source line. You can change the behavior of |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
204 this highlighting with the variable @code{next-error-highlight}. |
25829 | 205 |
206 The first time @kbd{C-x `} is used after the start of a compilation, | |
207 it moves to the first error's location. Subsequent uses of @kbd{C-x `} | |
208 advance down to subsequent errors. If you visit a specific error | |
209 message with @key{RET} or @kbd{Mouse-2}, subsequent @kbd{C-x `} | |
210 commands advance from there. When @kbd{C-x `} gets to the end of the | |
211 buffer and finds no more error messages to visit, it fails and signals | |
212 an Emacs error. | |
213 | |
67041
4cce2bac0f79
(Compilation Mode): Remove paragraph duplicated from the node `Compilation'.
Juri Linkov <juri@jurta.org>
parents:
66584
diff
changeset
|
214 @vindex compilation-skip-threshold |
4cce2bac0f79
(Compilation Mode): Remove paragraph duplicated from the node `Compilation'.
Juri Linkov <juri@jurta.org>
parents:
66584
diff
changeset
|
215 By default, @kbd{C-x `} skips less important messages. The variable |
4cce2bac0f79
(Compilation Mode): Remove paragraph duplicated from the node `Compilation'.
Juri Linkov <juri@jurta.org>
parents:
66584
diff
changeset
|
216 @code{compilation-skip-threshold} controls this. If its value is 2, |
4cce2bac0f79
(Compilation Mode): Remove paragraph duplicated from the node `Compilation'.
Juri Linkov <juri@jurta.org>
parents:
66584
diff
changeset
|
217 @kbd{C-x `} skips anything less than error, 1 skips anything less |
4cce2bac0f79
(Compilation Mode): Remove paragraph duplicated from the node `Compilation'.
Juri Linkov <juri@jurta.org>
parents:
66584
diff
changeset
|
218 than warning, and 0 doesn't skip any messages. |
4cce2bac0f79
(Compilation Mode): Remove paragraph duplicated from the node `Compilation'.
Juri Linkov <juri@jurta.org>
parents:
66584
diff
changeset
|
219 |
62384
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
220 When the left fringe is displayed, an arrow points to the |
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
221 current message in the compilation buffer. The variable |
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
222 @code{compilation-context-lines} controls the number of lines of |
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
223 leading context in the window before the current message. If it is |
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
224 @code{nil} and the left fringe is displayed, the window doesn't |
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
225 scroll. If there is no left fringe, no arrow is displayed and a value |
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
226 of @code{nil} means display the message at the top of the window. |
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
227 |
66133
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
228 If you're not in the compilation buffer when you run |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
229 @code{next-error}, Emacs will look for a buffer that contains error |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
230 messages. First, it looks for one displayed in the selected frame, |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
231 then for one that previously had @code{next-error} called on it, and |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
232 then at the current buffer. Finally, Emacs looks at all the remaining |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
233 buffers. @code{next-error} signals an error if it can't find any such |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
234 buffer. |
3e340cd42f9f
(Compilation Mode, Compilation): Clarified.
Richard M. Stallman <rms@gnu.org>
parents:
65974
diff
changeset
|
235 |
25829 | 236 @kbd{C-u C-x `} starts scanning from the beginning of the compilation |
237 buffer. This is one way to process the same set of errors again. | |
238 | |
37983
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
239 @vindex compilation-error-regexp-alist |
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
240 @vindex grep-regexp-alist |
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
241 To parse messages from the compiler, Compilation mode uses the |
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
242 variable @code{compilation-error-regexp-alist} which lists various |
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
243 formats of error messages and tells Emacs how to extract the source file |
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
244 and the line number from the text of a message. If your compiler isn't |
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
245 supported, you can tailor Compilation mode to it by adding elements to |
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
246 that list. A similar variable @code{grep-regexp-alist} tells Emacs how |
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
247 to parse output of a @code{grep} command. |
081777df34a7
(Compilation Mode): Document compilation-error-regexp-alist.
Eli Zaretskii <eliz@gnu.org>
parents:
37482
diff
changeset
|
248 |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
249 @findex compilation-next-error |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
250 @findex compilation-previous-error |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
251 @findex compilation-next-file |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
252 @findex compilation-previous-file |
25829 | 253 Compilation mode also redefines the keys @key{SPC} and @key{DEL} to |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
254 scroll by screenfuls, and @kbd{M-n} (@code{compilation-next-error}) |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
255 and @kbd{M-p} (@code{compilation-previous-error}) to move to the next |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
256 or previous error message. You can also use @kbd{M-@{} |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
257 (@code{compilation-next-file} and @kbd{M-@}} |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
258 (@code{compilation-previous-file}) to move up or down to an error |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
259 message for a different source file. |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
260 |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
261 @cindex Next Error Follow mode |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
262 @findex next-error-follow-minor-mode |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
263 You can type @kbd{C-c C-f} to toggle Next Error Follow mode. In |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
264 this minor mode, ordinary cursor motion in the compilation buffer |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
265 automatically updates the source buffer. For instance, moving the |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
266 cursor to the next error message causes the location of that error to |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
267 be displayed immediately. |
25829 | 268 |
269 The features of Compilation mode are also available in a minor mode | |
270 called Compilation Minor mode. This lets you parse error messages in | |
271 any buffer, not just a normal compilation output buffer. Type @kbd{M-x | |
272 compilation-minor-mode} to enable the minor mode. This defines the keys | |
273 @key{RET} and @kbd{Mouse-2}, as in the Compilation major mode. | |
274 | |
275 Compilation minor mode works in any buffer, as long as the contents | |
276 are in a format that it understands. In an Rlogin buffer (@pxref{Remote | |
277 Host}), Compilation minor mode automatically accesses remote source | |
278 files by FTP (@pxref{File Names}). | |
279 | |
280 @node Compilation Shell | |
281 @section Subshells for Compilation | |
282 | |
283 Emacs uses a shell to run the compilation command, but specifies | |
284 the option for a noninteractive shell. This means, in particular, that | |
285 the shell should start with no prompt. If you find your usual shell | |
286 prompt making an unsightly appearance in the @samp{*compilation*} | |
287 buffer, it means you have made a mistake in your shell's init file by | |
288 setting the prompt unconditionally. (This init file's name may be | |
289 @file{.bashrc}, @file{.profile}, @file{.cshrc}, @file{.shrc}, or various | |
290 other things, depending on the shell you use.) The shell init file | |
291 should set the prompt only if there already is a prompt. In csh, here | |
292 is how to do it: | |
293 | |
294 @example | |
295 if ($?prompt) set prompt = @dots{} | |
296 @end example | |
297 | |
298 @noindent | |
299 And here's how to do it in bash: | |
300 | |
301 @example | |
302 if [ "$@{PS1+set@}" = set ] | |
303 then PS1=@dots{} | |
304 fi | |
305 @end example | |
306 | |
307 There may well be other things that your shell's init file | |
308 ought to do only for an interactive shell. You can use the same | |
309 method to conditionalize them. | |
310 | |
311 The MS-DOS ``operating system'' does not support asynchronous | |
312 subprocesses; to work around this lack, @kbd{M-x compile} runs the | |
313 compilation command synchronously on MS-DOS. As a consequence, you must | |
314 wait until the command finishes before you can do anything else in | |
315 Emacs. @xref{MS-DOS}. | |
316 | |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
317 @node Grep Searching |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
318 @section Searching with Grep under Emacs |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
319 |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
320 Just as you can run a compiler from Emacs and then visit the lines |
64868
b35680d9ef84
(Compilation): Use `itemx' instead of `item'.
Juri Linkov <juri@jurta.org>
parents:
63678
diff
changeset
|
321 with compilation errors, you can also run @code{grep} and |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
322 then visit the lines on which matches were found. This works by |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
323 treating the matches reported by @code{grep} as if they were ``errors.'' |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
324 |
64949
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
325 @table @kbd |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
326 @item M-x grep |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
327 Run @code{grep} asynchronously under Emacs, with matching lines |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
328 listed in the buffer named @samp{*grep*}. |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
329 @item M-x grep-find |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
330 @itemx M-x find-grep |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
331 Run @code{grep} via @code{find}, with user-specified arguments, and |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
332 collect output in the buffer named @samp{*grep*}. |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
333 @item M-x kill-grep |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
334 Kill the running @code{grep} subprocess. |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
335 @end table |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
336 |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
337 @findex grep |
28c8ccee6671
(Compilation, Grep Searching): Move grep command
Juri Linkov <juri@jurta.org>
parents:
64890
diff
changeset
|
338 To run @code{grep}, type @kbd{M-x grep}, then enter a command line that |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
339 specifies how to run @code{grep}. Use the same arguments you would give |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
340 @code{grep} when running it normally: a @code{grep}-style regexp |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
341 (usually in single-quotes to quote the shell's special characters) |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
342 followed by file names, which may use wildcards. If you specify a |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
343 prefix argument for @kbd{M-x grep}, it figures out the tag |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
344 (@pxref{Tags}) around point, and puts that into the default |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
345 @code{grep} command. |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
346 |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
347 The output from @code{grep} goes in the @samp{*grep*} buffer. You |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
348 can find the corresponding lines in the original files using @kbd{C-x |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
349 `}, @key{RET}, and so forth, just like compilation errors. |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
350 |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
351 Some grep programs accept a @samp{--color} option to output special |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
352 markers around matches for the purpose of highlighting. You can make |
63678
e5e25d9c7335
(Grep Searching): Texinfo usage fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
63600
diff
changeset
|
353 use of this feature by setting @code{grep-highlight-matches} to |
e5e25d9c7335
(Grep Searching): Texinfo usage fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
63600
diff
changeset
|
354 @code{t}. When displaying a match in the source buffer, the exact |
e5e25d9c7335
(Grep Searching): Texinfo usage fix.
Juanma Barranquero <lekktu@gmail.com>
parents:
63600
diff
changeset
|
355 match will be highlighted, instead of the entire source line. |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
356 |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
357 @findex grep-find |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
358 @findex find-grep |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
359 The command @kbd{M-x grep-find} (also available as @kbd{M-x |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
360 find-grep}) is similar to @kbd{M-x grep}, but it supplies a different |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
361 initial default for the command---one that runs both @code{find} and |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
362 @code{grep}, so as to search every file in a directory tree. See also |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
363 the @code{find-grep-dired} command, in @ref{Dired and Find}. |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
364 |
61050 | 365 @node Flymake |
366 @section Finding Syntax Errors On The Fly | |
367 @cindex checking syntax | |
368 | |
369 Flymake mode is a minor mode that performs on-the-fly syntax | |
370 checking for many programming and markup languages, including C, C++, | |
371 Perl, HTML, and @TeX{}/La@TeX{}. It is somewhat analogous to Flyspell | |
372 mode, which performs spell checking for ordinary human languages in a | |
373 similar fashion (@pxref{Spelling}). As you edit a file, Flymake mode | |
374 runs an appropriate syntax checking tool in the background, using a | |
375 temporary copy of the buffer. It then parses the error and warning | |
376 messages, and highlights the erroneous lines in the buffer. The | |
377 syntax checking tool used depends on the language; for example, for | |
378 C/C++ files this is usually the C compiler. Flymake can also use | |
379 build tools such as @code{make} for checking complicated projects. | |
380 | |
381 To activate Flymake mode, type @kbd{M-x flymake-mode}. You can move | |
382 to the errors spotted by Flymake mode with @kbd{M-x | |
383 flymake-goto-next-error} and @kbd{M-x flymake-goto-prev-error}. To | |
384 display any error messages associated with the current line, use | |
385 @kbd{M-x flymake-display-err-menu-for-current-line}. | |
386 | |
387 For more details about using Flymake, see @ref{Top, Flymake, | |
388 Flymake, flymake, The Flymake Manual}. | |
389 | |
25829 | 390 @node Debuggers |
391 @section Running Debuggers Under Emacs | |
392 @cindex debuggers | |
393 @cindex GUD library | |
394 @cindex GDB | |
395 @cindex DBX | |
396 @cindex SDB | |
397 @cindex XDB | |
398 @cindex Perldb | |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
399 @cindex bashdb |
25829 | 400 @cindex JDB |
401 @cindex PDB | |
402 | |
403 @c Do you believe in GUD? | |
404 The GUD (Grand Unified Debugger) library provides an interface to | |
59825
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
405 various symbolic debuggers from within Emacs. We recommend the |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
406 debugger GDB, which is free software, but you can also run DBX, SDB or |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
407 XDB if you have them. GUD can also serve as an interface to Perl's |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
408 debugging mode, the Python debugger PDB, the bash debugger, and to |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
409 JDB, the Java Debugger. @xref{Debugging,, The Lisp Debugger, elisp, |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
410 the Emacs Lisp Reference Manual}, for information on debugging Emacs |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
411 Lisp programs. |
25829 | 412 |
413 @menu | |
414 * Starting GUD:: How to start a debugger subprocess. | |
415 * Debugger Operation:: Connection between the debugger and source buffers. | |
416 * Commands of GUD:: Key bindings for common commands. | |
417 * GUD Customization:: Defining your own commands for GUD. | |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
418 * GDB Graphical Interface:: An enhanced mode that uses GDB features to |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
419 implement a graphical debugging environment through |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
420 Emacs. |
25829 | 421 @end menu |
422 | |
423 @node Starting GUD | |
424 @subsection Starting GUD | |
425 | |
426 There are several commands for starting a debugger, each corresponding | |
427 to a particular debugger program. | |
428 | |
429 @table @kbd | |
430 @item M-x gdb @key{RET} @var{file} @key{RET} | |
431 @findex gdb | |
60440
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
432 Run GDB as a subprocess of Emacs. By default, this operates in |
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
433 graphical mode; @xref{GDB Graphical Interface}. Graphical mode |
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
434 does not support any other debuggers. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
435 |
25829 | 436 @item M-x dbx @key{RET} @var{file} @key{RET} |
437 @findex dbx | |
38490 | 438 Similar, but run DBX instead of GDB. |
25829 | 439 |
440 @item M-x xdb @key{RET} @var{file} @key{RET} | |
441 @findex xdb | |
442 @vindex gud-xdb-directories | |
38490 | 443 Similar, but run XDB instead of GDB. Use the variable |
25829 | 444 @code{gud-xdb-directories} to specify directories to search for source |
445 files. | |
446 | |
447 @item M-x sdb @key{RET} @var{file} @key{RET} | |
448 @findex sdb | |
38490 | 449 Similar, but run SDB instead of GDB. |
25829 | 450 |
451 Some versions of SDB do not mention source file names in their | |
452 messages. When you use them, you need to have a valid tags table | |
453 (@pxref{Tags}) in order for GUD to find functions in the source code. | |
454 If you have not visited a tags table or the tags table doesn't list one | |
455 of the functions, you get a message saying @samp{The sdb support | |
456 requires a valid tags table to work}. If this happens, generate a valid | |
457 tags table in the working directory and try again. | |
458 | |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
459 @item M-x bashdb @key{RET} @var{file} @key{RET} |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
460 @findex bashdb |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
461 Run the bash debugger to debug @var{file}, a shell script. |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
462 |
25829 | 463 @item M-x perldb @key{RET} @var{file} @key{RET} |
464 @findex perldb | |
465 Run the Perl interpreter in debug mode to debug @var{file}, a Perl program. | |
466 | |
467 @item M-x jdb @key{RET} @var{file} @key{RET} | |
468 @findex jdb | |
469 Run the Java debugger to debug @var{file}. | |
470 | |
471 @item M-x pdb @key{RET} @var{file} @key{RET} | |
472 @findex pdb | |
473 Run the Python debugger to debug @var{file}. | |
474 @end table | |
475 | |
476 Each of these commands takes one argument: a command line to invoke | |
477 the debugger. In the simplest case, specify just the name of the | |
478 executable file you want to debug. You may also use options that the | |
479 debugger supports. However, shell wildcards and variables are not | |
480 allowed. GUD assumes that the first argument not starting with a | |
481 @samp{-} is the executable file name. | |
482 | |
483 @node Debugger Operation | |
484 @subsection Debugger Operation | |
485 | |
42904
0e87fd2f82b4
(Debugger Operation): Add index entries for fringe usage.
Eli Zaretskii <eliz@gnu.org>
parents:
39820
diff
changeset
|
486 @cindex fringes, and current execution line in GUD |
25829 | 487 When you run a debugger with GUD, the debugger uses an Emacs buffer |
488 for its ordinary input and output. This is called the GUD buffer. The | |
489 debugger displays the source files of the program by visiting them in | |
490 Emacs buffers. An arrow (@samp{=>}) in one of these buffers indicates | |
42913 | 491 the current execution line.@footnote{Under a window system, the arrow |
492 appears in the left fringe of the Emacs window.} Moving point in this | |
493 buffer does not move the arrow. | |
25829 | 494 |
495 You can start editing these source files at any time in the buffers | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
496 that display them. The arrow is not part of the file's |
25829 | 497 text; it appears only on the screen. If you do modify a source file, |
498 keep in mind that inserting or deleting lines will throw off the arrow's | |
499 positioning; GUD has no way of figuring out which line corresponded | |
500 before your changes to the line number in a debugger message. Also, | |
501 you'll typically have to recompile and restart the program for your | |
502 changes to be reflected in the debugger's tables. | |
503 | |
504 If you wish, you can control your debugger process entirely through the | |
505 debugger buffer, which uses a variant of Shell mode. All the usual | |
506 commands for your debugger are available, and you can use the Shell mode | |
507 history commands to repeat them. @xref{Shell Mode}. | |
508 | |
60440
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
509 @cindex tooltips with GUD |
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
510 @vindex tooltip-gud-modes |
62171
83608278e922
(Debugger Operation): Describe gud-tooltip-echo-area.
Nick Roberts <nickrob@snap.net.nz>
parents:
62143
diff
changeset
|
511 @vindex gud-tooltip-mode |
83608278e922
(Debugger Operation): Describe gud-tooltip-echo-area.
Nick Roberts <nickrob@snap.net.nz>
parents:
62143
diff
changeset
|
512 @vindex gud-tooltip-echo-area |
60440
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
513 The Tooltip facility (@pxref{Tooltips}) provides support for GUD@. |
62143
892a16c3b886
(Debugger Operation): Update to reflect changes
Nick Roberts <nickrob@snap.net.nz>
parents:
61951
diff
changeset
|
514 You activate this feature by turning on the minor mode |
892a16c3b886
(Debugger Operation): Update to reflect changes
Nick Roberts <nickrob@snap.net.nz>
parents:
61951
diff
changeset
|
515 @code{gud-tooltip-mode}. Then you can display a variable's value in a |
892a16c3b886
(Debugger Operation): Update to reflect changes
Nick Roberts <nickrob@snap.net.nz>
parents:
61951
diff
changeset
|
516 tooltip simply by pointing at it with the mouse. In graphical mode, |
892a16c3b886
(Debugger Operation): Update to reflect changes
Nick Roberts <nickrob@snap.net.nz>
parents:
61951
diff
changeset
|
517 with a C program, you can also display the @code{#define} directive |
892a16c3b886
(Debugger Operation): Update to reflect changes
Nick Roberts <nickrob@snap.net.nz>
parents:
61951
diff
changeset
|
518 associated with an identifier when the program is not executing. This |
892a16c3b886
(Debugger Operation): Update to reflect changes
Nick Roberts <nickrob@snap.net.nz>
parents:
61951
diff
changeset
|
519 operates in the GUD buffer and in source buffers with major modes in |
62171
83608278e922
(Debugger Operation): Describe gud-tooltip-echo-area.
Nick Roberts <nickrob@snap.net.nz>
parents:
62143
diff
changeset
|
520 the list @code{gud-tooltip-modes}. If the variable |
62384
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
521 @code{gud-tooltip-echo-area} is non-@code{nil} then the variable's |
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
522 value is displayed in the echo area. |
60440
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
523 |
62405
39bedd779f48
(Debugger Operation): Mention GUD tooltips are disabled with GDB in text
Nick Roberts <nickrob@snap.net.nz>
parents:
62384
diff
changeset
|
524 With GDB in text command mode (@pxref{GDB Graphical Interface}), |
39bedd779f48
(Debugger Operation): Mention GUD tooltips are disabled with GDB in text
Nick Roberts <nickrob@snap.net.nz>
parents:
62384
diff
changeset
|
525 it is possible that use of GUD tooltips can cause a function to be |
39bedd779f48
(Debugger Operation): Mention GUD tooltips are disabled with GDB in text
Nick Roberts <nickrob@snap.net.nz>
parents:
62384
diff
changeset
|
526 called with harmful side-effects. In this case, Emacs disables |
62666
51db72745571
(Debugger Operation): Simplify last sentence.
Nick Roberts <nickrob@snap.net.nz>
parents:
62405
diff
changeset
|
527 them. |
62405
39bedd779f48
(Debugger Operation): Mention GUD tooltips are disabled with GDB in text
Nick Roberts <nickrob@snap.net.nz>
parents:
62384
diff
changeset
|
528 |
25829 | 529 @node Commands of GUD |
530 @subsection Commands of GUD | |
531 | |
532 The GUD interaction buffer uses a variant of Shell mode, so the | |
533 commands of Shell mode are available (@pxref{Shell Mode}). GUD mode | |
534 also provides commands for setting and clearing breakpoints, for | |
535 selecting stack frames, and for stepping through the program. These | |
536 commands are available both in the GUD buffer and globally, but with | |
62384
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
537 different key bindings. It also has its own tool bar from which you |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
538 can invoke the more common commands by clicking on the appropriate |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
539 icon. This is particularly useful for repetitive commands like |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
540 gud-next and gud-step and allows the user to hide the GUD buffer. |
25829 | 541 |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
542 The breakpoint commands are normally used in source file buffers, |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
543 because that is the easiest way to specify where to set or clear the |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
544 breakpoint. Here's the global command to set a breakpoint: |
25829 | 545 |
546 @table @kbd | |
547 @item C-x @key{SPC} | |
548 @kindex C-x SPC | |
549 Set a breakpoint on the source line that point is on. | |
550 @end table | |
551 | |
552 @kindex C-x C-a @r{(GUD)} | |
553 Here are the other special commands provided by GUD. The keys | |
554 starting with @kbd{C-c} are available only in the GUD interaction | |
555 buffer. The key bindings that start with @kbd{C-x C-a} are available in | |
556 the GUD interaction buffer and also in source files. | |
557 | |
558 @table @kbd | |
559 @item C-c C-l | |
560 @kindex C-c C-l @r{(GUD)} | |
561 @itemx C-x C-a C-l | |
562 @findex gud-refresh | |
563 Display in another window the last line referred to in the GUD | |
564 buffer (that is, the line indicated in the last location message). | |
565 This runs the command @code{gud-refresh}. | |
566 | |
567 @item C-c C-s | |
568 @kindex C-c C-s @r{(GUD)} | |
569 @itemx C-x C-a C-s | |
570 @findex gud-step | |
571 Execute a single line of code (@code{gud-step}). If the line contains | |
572 a function call, execution stops after entering the called function. | |
573 | |
574 @item C-c C-n | |
575 @kindex C-c C-n @r{(GUD)} | |
576 @itemx C-x C-a C-n | |
577 @findex gud-next | |
578 Execute a single line of code, stepping across entire function calls | |
579 at full speed (@code{gud-next}). | |
580 | |
581 @item C-c C-i | |
582 @kindex C-c C-i @r{(GUD)} | |
583 @itemx C-x C-a C-i | |
584 @findex gud-stepi | |
585 Execute a single machine instruction (@code{gud-stepi}). | |
586 | |
587 @need 3000 | |
588 @item C-c C-r | |
589 @kindex C-c C-r @r{(GUD)} | |
590 @itemx C-x C-a C-r | |
591 @findex gud-cont | |
592 Continue execution without specifying any stopping point. The program | |
593 will run until it hits a breakpoint, terminates, or gets a signal that | |
594 the debugger is checking for (@code{gud-cont}). | |
595 | |
596 @need 1000 | |
597 @item C-c C-d | |
598 @kindex C-c C-d @r{(GUD)} | |
599 @itemx C-x C-a C-d | |
600 @findex gud-remove | |
601 Delete the breakpoint(s) on the current source line, if any | |
602 (@code{gud-remove}). If you use this command in the GUD interaction | |
603 buffer, it applies to the line where the program last stopped. | |
604 | |
605 @item C-c C-t | |
606 @kindex C-c C-t @r{(GUD)} | |
607 @itemx C-x C-a C-t | |
608 @findex gud-tbreak | |
609 Set a temporary breakpoint on the current source line, if any. | |
610 If you use this command in the GUD interaction buffer, | |
611 it applies to the line where the program last stopped. | |
612 @end table | |
613 | |
614 The above commands are common to all supported debuggers. If you are | |
615 using GDB or (some versions of) DBX, these additional commands are available: | |
616 | |
617 @table @kbd | |
618 @item C-c < | |
619 @kindex C-c < @r{(GUD)} | |
620 @itemx C-x C-a < | |
621 @findex gud-up | |
622 Select the next enclosing stack frame (@code{gud-up}). This is | |
623 equivalent to the @samp{up} command. | |
624 | |
625 @item C-c > | |
626 @kindex C-c > @r{(GUD)} | |
627 @itemx C-x C-a > | |
628 @findex gud-down | |
629 Select the next inner stack frame (@code{gud-down}). This is | |
630 equivalent to the @samp{down} command. | |
631 @end table | |
632 | |
633 If you are using GDB, these additional key bindings are available: | |
634 | |
635 @table @kbd | |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
636 @item C-c C-r |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
637 @kindex C-c C-r @r{(GUD)} |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
638 @itemx C-x C-a C-r |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
639 @findex gud-run |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
640 Start execution of the program (@code{gud-run}). |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
641 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
642 @item C-c C-u |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
643 @kindex C-c C-u @r{(GUD)} |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
644 @itemx C-x C-a C-u |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
645 @findex gud-until |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
646 Continue execution to the current line. The program will run until |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
647 it hits a breakpoint, terminates, gets a signal that the debugger is |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
648 checking for, or reaches the line on which the cursor currently sits |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
649 (@code{gud-until}). |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
650 |
25829 | 651 @item @key{TAB} |
652 @kindex TAB @r{(GUD)} | |
653 @findex gud-gdb-complete-command | |
654 With GDB, complete a symbol name (@code{gud-gdb-complete-command}). | |
655 This key is available only in the GUD interaction buffer, and requires | |
656 GDB versions 4.13 and later. | |
657 | |
658 @item C-c C-f | |
659 @kindex C-c C-f @r{(GUD)} | |
660 @itemx C-x C-a C-f | |
661 @findex gud-finish | |
662 Run the program until the selected stack frame returns (or until it | |
663 stops for some other reason). | |
43137
bc055bf06a94
(Commands of GUD): Add gud-jump.
Richard M. Stallman <rms@gnu.org>
parents:
42913
diff
changeset
|
664 |
46238
f5ac68c7cc15
Clarify gud-jump description.
Richard M. Stallman <rms@gnu.org>
parents:
44116
diff
changeset
|
665 @item C-x C-a C-j |
f5ac68c7cc15
Clarify gud-jump description.
Richard M. Stallman <rms@gnu.org>
parents:
44116
diff
changeset
|
666 @kindex C-x C-a C-j @r{(GUD)} |
43137
bc055bf06a94
(Commands of GUD): Add gud-jump.
Richard M. Stallman <rms@gnu.org>
parents:
42913
diff
changeset
|
667 @findex gud-jump |
46238
f5ac68c7cc15
Clarify gud-jump description.
Richard M. Stallman <rms@gnu.org>
parents:
44116
diff
changeset
|
668 Only useful in a source buffer, (@code{gud-jump}) transfers the |
f5ac68c7cc15
Clarify gud-jump description.
Richard M. Stallman <rms@gnu.org>
parents:
44116
diff
changeset
|
669 program's execution point to the current line. In other words, the |
f5ac68c7cc15
Clarify gud-jump description.
Richard M. Stallman <rms@gnu.org>
parents:
44116
diff
changeset
|
670 next line that the program executes will be the one where you gave the |
f5ac68c7cc15
Clarify gud-jump description.
Richard M. Stallman <rms@gnu.org>
parents:
44116
diff
changeset
|
671 command. If the new execution line is in a different function from |
f5ac68c7cc15
Clarify gud-jump description.
Richard M. Stallman <rms@gnu.org>
parents:
44116
diff
changeset
|
672 the previously one, GDB prompts for confirmation since the results may |
f5ac68c7cc15
Clarify gud-jump description.
Richard M. Stallman <rms@gnu.org>
parents:
44116
diff
changeset
|
673 be bizarre. See the GDB manual entry regarding @code{jump} for |
f5ac68c7cc15
Clarify gud-jump description.
Richard M. Stallman <rms@gnu.org>
parents:
44116
diff
changeset
|
674 details. |
25829 | 675 @end table |
676 | |
677 These commands interpret a numeric argument as a repeat count, when | |
678 that makes sense. | |
679 | |
680 Because @key{TAB} serves as a completion command, you can't use it to | |
681 enter a tab as input to the program you are debugging with GDB. | |
682 Instead, type @kbd{C-q @key{TAB}} to enter a tab. | |
683 | |
684 @node GUD Customization | |
685 @subsection GUD Customization | |
686 | |
687 @vindex gdb-mode-hook | |
688 @vindex dbx-mode-hook | |
689 @vindex sdb-mode-hook | |
690 @vindex xdb-mode-hook | |
691 @vindex perldb-mode-hook | |
692 @vindex pdb-mode-hook | |
693 @vindex jdb-mode-hook | |
694 On startup, GUD runs one of the following hooks: @code{gdb-mode-hook}, | |
695 if you are using GDB; @code{dbx-mode-hook}, if you are using DBX; | |
696 @code{sdb-mode-hook}, if you are using SDB; @code{xdb-mode-hook}, if you | |
697 are using XDB; @code{perldb-mode-hook}, for Perl debugging mode; | |
37482
4b43d9f652aa
Correct typo on pdb-mode-hook.
Richard M. Stallman <rms@gnu.org>
parents:
37346
diff
changeset
|
698 @code{pdb-mode-hook}, for PDB; @code{jdb-mode-hook}, for JDB. You can |
25829 | 699 use these hooks to define custom key bindings for the debugger |
700 interaction buffer. @xref{Hooks}. | |
701 | |
702 Here is a convenient way to define a command that sends a particular | |
703 command string to the debugger, and set up a key binding for it in the | |
704 debugger interaction buffer: | |
705 | |
706 @findex gud-def | |
707 @example | |
708 (gud-def @var{function} @var{cmdstring} @var{binding} @var{docstring}) | |
709 @end example | |
710 | |
711 This defines a command named @var{function} which sends | |
712 @var{cmdstring} to the debugger process, and gives it the documentation | |
38743 | 713 string @var{docstring}. You can then use the command @var{function} in any |
25829 | 714 buffer. If @var{binding} is non-@code{nil}, @code{gud-def} also binds |
715 the command to @kbd{C-c @var{binding}} in the GUD buffer's mode and to | |
716 @kbd{C-x C-a @var{binding}} generally. | |
717 | |
718 The command string @var{cmdstring} may contain certain | |
719 @samp{%}-sequences that stand for data to be filled in at the time | |
720 @var{function} is called: | |
721 | |
722 @table @samp | |
723 @item %f | |
724 The name of the current source file. If the current buffer is the GUD | |
725 buffer, then the ``current source file'' is the file that the program | |
726 stopped in. | |
727 @c This said, ``the name of the file the program counter was in at the last breakpoint.'' | |
728 @c But I suspect it is really the last stop file. | |
729 | |
730 @item %l | |
731 The number of the current source line. If the current buffer is the GUD | |
732 buffer, then the ``current source line'' is the line that the program | |
733 stopped in. | |
734 | |
735 @item %e | |
736 The text of the C lvalue or function-call expression at or adjacent to point. | |
737 | |
738 @item %a | |
739 The text of the hexadecimal address at or adjacent to point. | |
740 | |
741 @item %p | |
742 The numeric argument of the called function, as a decimal number. If | |
743 the command is used without a numeric argument, @samp{%p} stands for the | |
744 empty string. | |
745 | |
746 If you don't use @samp{%p} in the command string, the command you define | |
747 ignores any numeric argument. | |
748 @end table | |
749 | |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
750 @node GDB Graphical Interface |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
751 @subsection GDB Graphical Interface |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
752 |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
753 @findex gdb-mouse-set-clear-breakpoint |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
754 @findex gdb-mouse-toggle-breakpoint |
60440
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
755 By default, the command @code{gdb} starts GDB using a graphical |
59825
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
756 interface where you view and control the program's data using Emacs |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
757 windows. You can still interact with GDB through the GUD buffer, but |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
758 the point of this mode is that you can do it through menus and clicks, |
66421
c5bb9ba4c102
(GDB Graphical Interface): Describe gdb-mouse-until.
Nick Roberts <nickrob@snap.net.nz>
parents:
66166
diff
changeset
|
759 without needing to know GDB commands. For example, you can click |
c5bb9ba4c102
(GDB Graphical Interface): Describe gdb-mouse-until.
Nick Roberts <nickrob@snap.net.nz>
parents:
66166
diff
changeset
|
760 @kbd{Mouse-1} in the fringe or display margin of a source buffer to |
c5bb9ba4c102
(GDB Graphical Interface): Describe gdb-mouse-until.
Nick Roberts <nickrob@snap.net.nz>
parents:
66166
diff
changeset
|
761 set a breakpoint there and, on a graphical display, a red bullet will |
c5bb9ba4c102
(GDB Graphical Interface): Describe gdb-mouse-until.
Nick Roberts <nickrob@snap.net.nz>
parents:
66166
diff
changeset
|
762 appear. If a breakpoint already exists on that line, this action will |
66567
1b800330fe1f
(GDB Graphical Interface): Don't reference
Nick Roberts <nickrob@snap.net.nz>
parents:
66421
diff
changeset
|
763 remove it. You can also enable or disable a breakpoint by clicking |
1b800330fe1f
(GDB Graphical Interface): Don't reference
Nick Roberts <nickrob@snap.net.nz>
parents:
66421
diff
changeset
|
764 @kbd{Mouse-3} on the bullet. If you drag the debugger arrow in the |
1b800330fe1f
(GDB Graphical Interface): Don't reference
Nick Roberts <nickrob@snap.net.nz>
parents:
66421
diff
changeset
|
765 fringe with @kbd{Mouse-1}, execution will continue to the line where |
1b800330fe1f
(GDB Graphical Interface): Don't reference
Nick Roberts <nickrob@snap.net.nz>
parents:
66421
diff
changeset
|
766 you release the button, provided it is still in the same frame |
66421
c5bb9ba4c102
(GDB Graphical Interface): Describe gdb-mouse-until.
Nick Roberts <nickrob@snap.net.nz>
parents:
66166
diff
changeset
|
767 (@code{gdb-mouse-until}). Alternatively, you can click @kbd{Mouse-2} |
c5bb9ba4c102
(GDB Graphical Interface): Describe gdb-mouse-until.
Nick Roberts <nickrob@snap.net.nz>
parents:
66166
diff
changeset
|
768 at some point in the fringe of this buffer and execution will advance |
c5bb9ba4c102
(GDB Graphical Interface): Describe gdb-mouse-until.
Nick Roberts <nickrob@snap.net.nz>
parents:
66166
diff
changeset
|
769 to there. |
59825
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
770 |
60440
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
771 @vindex gud-gdb-command-name |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
772 @findex gdba |
60440
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
773 You can also run GDB in text command mode, which creates a buffer |
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
774 for input and output to GDB. To do this, set |
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
775 @code{gud-gdb-command-name} to @code{"gdb --fullname"} or edit the |
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
776 startup command in the minibuffer to say that. You need to do use |
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
777 text command mode to run multiple debugging sessions within one Emacs |
63600 | 778 session. If you have customized @code{gud-gdb-command-name} in that |
60440
c82b8f53ded0
(Starting GUD): Don't explain text vs graphical GDB here.
Richard M. Stallman <rms@gnu.org>
parents:
60278
diff
changeset
|
779 way, then you can use @kbd{M-x gdba} to invoke GDB in graphical mode. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
780 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
781 @menu |
65022
af2cce893ff5
(GDB Graphical Interface): Use better node names.
Nick Roberts <nickrob@snap.net.nz>
parents:
64949
diff
changeset
|
782 * GDB User Interface Layout:: Control the number of displayed buffers. |
af2cce893ff5
(GDB Graphical Interface): Use better node names.
Nick Roberts <nickrob@snap.net.nz>
parents:
64949
diff
changeset
|
783 * Breakpoints Buffer:: A breakpoint control panel. |
af2cce893ff5
(GDB Graphical Interface): Use better node names.
Nick Roberts <nickrob@snap.net.nz>
parents:
64949
diff
changeset
|
784 * Stack Buffer:: Select a frame from the call stack. |
af2cce893ff5
(GDB Graphical Interface): Use better node names.
Nick Roberts <nickrob@snap.net.nz>
parents:
64949
diff
changeset
|
785 * Watch Expressions:: Monitor variable values in the speedbar. |
65024
5668cf670dde
(GDB Graphical Interface): Improve filling of menu item.
Luc Teirlinck <teirllm@auburn.edu>
parents:
65022
diff
changeset
|
786 * Other GDB User Interface Buffers:: Input/output, locals, registers, |
5668cf670dde
(GDB Graphical Interface): Improve filling of menu item.
Luc Teirlinck <teirllm@auburn.edu>
parents:
65022
diff
changeset
|
787 assembler, threads and memory buffers. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
788 @end menu |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
789 |
65022
af2cce893ff5
(GDB Graphical Interface): Use better node names.
Nick Roberts <nickrob@snap.net.nz>
parents:
64949
diff
changeset
|
790 @node GDB User Interface Layout |
af2cce893ff5
(GDB Graphical Interface): Use better node names.
Nick Roberts <nickrob@snap.net.nz>
parents:
64949
diff
changeset
|
791 @subsubsection GDB User Interface Layout |
55577
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
792 @cindex GDB User Interface layout |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
793 |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
794 @findex gdb-many-windows |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
795 @vindex gdb-many-windows |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
796 |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
797 If the variable @code{gdb-many-windows} is @code{nil} (the default |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
798 value) then gdb just pops up the GUD buffer unless the variable |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
799 @code{gdb-show-main} is non-@code{nil}. In this case it starts with |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
800 two windows: one displaying the GUD buffer and the other with the |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
801 source file with the main routine of the inferior. |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
802 |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
803 If @code{gdb-many-windows} is non-@code{nil}, regardless of the value of |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
804 @code{gdb-show-main}, the layout below will appear unless |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
805 @code{gdb-use-inferior-io-buffer} is @code{nil}. In this case the |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
806 source buffer occupies the full width of the frame. |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
807 |
65974
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
808 @example |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
809 +--------------------------------+--------------------------------+ |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
810 | | | |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
811 | GUD buffer (I/O of GDB) | Locals buffer | |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
812 | | | |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
813 |--------------------------------+--------------------------------+ |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
814 | | | |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
815 | Source buffer | I/O buffer (of inferior) | |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
816 | | | |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
817 |--------------------------------+--------------------------------+ |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
818 | | | |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
819 | Stack buffer | Breakpoints buffer | |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
820 | | | |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
821 +--------------------------------+--------------------------------+ |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
822 @end example |
55577
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
823 |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
824 To toggle this layout, do @kbd{M-x gdb-many-windows}. |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
825 |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
826 @findex gdb-restore-windows |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
827 If you change the window layout, for example, while editing and |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
828 re-compiling your program, then you can restore it with the command |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
829 @code{gdb-restore-windows}. |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
830 |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
831 You may also choose which additional buffers you want to display, |
65974
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
832 either in the same frame or a different one. Select them from |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
833 @samp{GUD->GDB-windows} or @samp{GUD->GDB-Frames} sub-menu |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
834 respectively. If the menu-bar is unavailable, type @code{M-x |
55577
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
835 gdb-display-@var{buffertype}-buffer} or @code{M-x |
65974
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
836 gdb-frame-@var{buffertype}-buffer} respectively, where |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
837 @var{buffertype} is the relevant buffer type e.g breakpoints. |
67231
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
838 Most of these buffers are read-only and be killed by simply |
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
839 pressing @kbd{q} in them. |
55577
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
840 |
59825
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
841 When you finish debugging then kill the GUD buffer with @kbd{C-x k}, |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
842 which will also kill all the buffers associated with the session. |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
843 However you need not do this if, after editing and re-compiling your |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
844 source code within Emacs, you wish continue debugging. When you |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
845 restart execution, GDB will automatically find your new executable. |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
846 Keeping the GUD buffer has the advantage of keeping the shell history |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
847 as well as GDB's breakpoints. You need to check, however, that the |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
848 breakpoints in the recently edited code are still where you want them. |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
849 |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
850 @node Breakpoints Buffer |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
851 @subsubsection Breakpoints Buffer |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
852 |
56808
00b9078008ef
(Building): Interchange nodes (for correct numbering).
Luc Teirlinck <teirllm@auburn.edu>
parents:
56007
diff
changeset
|
853 The breakpoints buffer shows the existing breakpoints and watchpoints |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
854 (@pxref{Breakpoints,,, gdb, The GNU debugger}). It has three special |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
855 commands: |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
856 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
857 @table @kbd |
56808
00b9078008ef
(Building): Interchange nodes (for correct numbering).
Luc Teirlinck <teirllm@auburn.edu>
parents:
56007
diff
changeset
|
858 @item @key{SPC} |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
859 @kindex SPC @r{(GDB breakpoints buffer)} |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
860 @findex gdb-toggle-breakpoint |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
861 Enable/disable the breakpoint at the current line |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
862 (@code{gdb-toggle-breakpoint}). On a graphical display, this changes |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
863 the color of a bullet in the margin of the source buffer at the |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
864 relevant line. This is red when the breakpoint is enabled and grey |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
865 when it is disabled. Text-only terminals correspondingly display |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
866 a @samp{B} or @samp{b}. |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
867 |
67231
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
868 @item D |
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
869 @kindex D @r{(GDB breakpoints buffer)} |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
870 @findex gdb-delete-breakpoint |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
871 Delete the breakpoint at the current line (@code{gdb-delete-breakpoint}). |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
872 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
873 @item @key{RET} |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
874 @kindex RET @r{(GDB breakpoints buffer)} |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
875 @findex gdb-goto-breakpoint |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
876 Display the file in the source buffer at the breakpoint specified at |
60843
4e549a9044e1
(Stack Buffer): Mention reverse contrast for
Nick Roberts <nickrob@snap.net.nz>
parents:
60789
diff
changeset
|
877 the current line (@code{gdb-goto-breakpoint}). Alternatively, click |
4e549a9044e1
(Stack Buffer): Mention reverse contrast for
Nick Roberts <nickrob@snap.net.nz>
parents:
60789
diff
changeset
|
878 @kbd{Mouse-2} on the breakpoint that you wish to visit. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
879 @end table |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
880 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
881 @node Stack Buffer |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
882 @subsubsection Stack Buffer |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
883 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
884 The stack buffer displays a @dfn{call stack}, with one line for each |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
885 of the nested subroutine calls (@dfn{stack frames}) now active in the |
65974
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
886 program. @xref{Backtrace,, Backtraces, gdb, The GNU debugger}. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
887 |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
888 @findex gdb-frames-select |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
889 The selected frame number is displayed in reverse contrast. Move |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
890 point to any frame in the stack and type @key{RET} to select it |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
891 (@code{gdb-frames-select}) and display the associated source in the |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
892 source buffer. Alternatively, click @kbd{Mouse-2} on a frame to |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
893 select it. If the locals buffer is displayed then its contents update |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
894 to display the variables that are local to the new frame. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
895 |
52907
d1707faf8297
(Watch Expressions): Update section on data display
Nick Roberts <nickrob@snap.net.nz>
parents:
52401
diff
changeset
|
896 @node Watch Expressions |
d1707faf8297
(Watch Expressions): Update section on data display
Nick Roberts <nickrob@snap.net.nz>
parents:
52401
diff
changeset
|
897 @subsubsection Watch Expressions |
d1707faf8297
(Watch Expressions): Update section on data display
Nick Roberts <nickrob@snap.net.nz>
parents:
52401
diff
changeset
|
898 @cindex Watching expressions in GDB |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
899 |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
900 @findex gud-watch |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
901 If you want to see how a variable changes each time your program stops |
52907
d1707faf8297
(Watch Expressions): Update section on data display
Nick Roberts <nickrob@snap.net.nz>
parents:
52401
diff
changeset
|
902 then place the cursor over the variable name and click on the watch |
62384
035f76eff1bc
Replace toolbar with "tool bar" for consistency.
Nick Roberts <nickrob@snap.net.nz>
parents:
62221
diff
changeset
|
903 icon in the tool bar (@code{gud-watch}). |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
904 |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
905 Each watch expression is displayed in the speedbar. Complex data |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
906 types, such as arrays, structures and unions are represented in a tree |
67067
18cd75eca849
(Watch Expressions): Expand description.
Nick Roberts <nickrob@snap.net.nz>
parents:
67066
diff
changeset
|
907 format. Leaves and simple data types show the name of the expression |
67231
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
908 and its value, and display the type as a tooltip. Higher levels show |
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
909 the name, type and address value for pointers and just the name and |
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
910 type otherwise. |
67066
9a9cddf82cc4
(Watch Expressions): Expand description.
Nick Roberts <nickrob@snap.net.nz>
parents:
67041
diff
changeset
|
911 |
9a9cddf82cc4
(Watch Expressions): Expand description.
Nick Roberts <nickrob@snap.net.nz>
parents:
67041
diff
changeset
|
912 To expand or contract a complex data type, click @kbd{Mouse-2} |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
913 on the tag to the left of the expression. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
914 |
52907
d1707faf8297
(Watch Expressions): Update section on data display
Nick Roberts <nickrob@snap.net.nz>
parents:
52401
diff
changeset
|
915 @findex gdb-var-delete |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
916 With the cursor over the root expression of a complex data type, type |
55577
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
917 @kbd{D} to delete it from the speedbar |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
918 (@code{gdb-var-delete}). |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
919 |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
920 @kindex RET @r{(GDB speedbar)} |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
921 @findex gdb-edit-value |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
922 With the cursor over a simple data type or an element of a complex |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
923 data type which holds a value, type @key{RET} or click @kbd{Mouse-2} to edit |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
924 its value. A prompt for a new value appears in the mini-buffer |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
925 (@code{gdb-edit-value}). |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
926 |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
927 @vindex gdb-show-changed-values |
54131
6534ec3bbe32
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
53254
diff
changeset
|
928 If you set the variable @code{gdb-show-changed-values} to |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
929 non-@code{nil} (the default value), Emacs will use |
54131
6534ec3bbe32
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
53254
diff
changeset
|
930 font-lock-warning-face to display values that have recently changed in |
6534ec3bbe32
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
53254
diff
changeset
|
931 the speedbar. |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
932 |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
933 @vindex gdb-use-colon-colon-notation |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
934 If you set the variable @code{gdb-use-colon-colon-notation} to a |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
935 non-@code{nil} value then, in C, Emacs will use the |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
936 @var{function}::@var{variable} format to display variables in the |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
937 speedbar. Since this does not work for variables defined in compound |
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
938 statements, the default value is @code{nil}. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
939 |
65022
af2cce893ff5
(GDB Graphical Interface): Use better node names.
Nick Roberts <nickrob@snap.net.nz>
parents:
64949
diff
changeset
|
940 @node Other GDB User Interface Buffers |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
941 @subsubsection Other Buffers |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
942 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
943 @table @asis |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
944 @item Input/Output Buffer |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
945 @vindex gdb-use-inferior-io-buffer |
55577
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
946 If the variable @code{gdb-use-inferior-io-buffer} is non-@code{nil}, |
66ec9893d229
(GDB Graphical Interface): Update and describe layout first.
Nick Roberts <nickrob@snap.net.nz>
parents:
54131
diff
changeset
|
947 the executable program that is being debugged takes its input and |
66584
9600fc8cfb65
(Other GDB User Interface Buffers): Describe
Nick Roberts <nickrob@snap.net.nz>
parents:
66567
diff
changeset
|
948 displays its output here, otherwise it uses the GUD buffer. To toggle |
9600fc8cfb65
(Other GDB User Interface Buffers): Describe
Nick Roberts <nickrob@snap.net.nz>
parents:
66567
diff
changeset
|
949 the use of this buffer, do @kbd{M-x gdb-use-inferior-io-buffer}. |
9600fc8cfb65
(Other GDB User Interface Buffers): Describe
Nick Roberts <nickrob@snap.net.nz>
parents:
66567
diff
changeset
|
950 |
9600fc8cfb65
(Other GDB User Interface Buffers): Describe
Nick Roberts <nickrob@snap.net.nz>
parents:
66567
diff
changeset
|
951 Some of the commands from shell mode are available here. @xref{Shell |
9600fc8cfb65
(Other GDB User Interface Buffers): Describe
Nick Roberts <nickrob@snap.net.nz>
parents:
66567
diff
changeset
|
952 Mode}. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
953 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
954 @item Locals Buffer |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
955 The locals buffer displays the values of local variables of the |
65974
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
956 current frame for simple data types (@pxref{Frame Info, Frame Info, |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
957 Information on a frame, gdb, The GNU debugger}). |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
958 |
67074
56b37a553ade
(Watch Expressions): Expand description.
Nick Roberts <nickrob@snap.net.nz>
parents:
67067
diff
changeset
|
959 Arrays and structures display their type only. Move point to their |
56b37a553ade
(Watch Expressions): Expand description.
Nick Roberts <nickrob@snap.net.nz>
parents:
67067
diff
changeset
|
960 type description ([struct/union] or [array]) and press @key{RET}, or |
56b37a553ade
(Watch Expressions): Expand description.
Nick Roberts <nickrob@snap.net.nz>
parents:
67067
diff
changeset
|
961 alternatively click @kbd{Mouse-2} there, to examine their values. |
56b37a553ade
(Watch Expressions): Expand description.
Nick Roberts <nickrob@snap.net.nz>
parents:
67067
diff
changeset
|
962 @xref{Watch Expressions}. |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
963 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
964 @item Registers Buffer |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
965 @findex toggle-gdb-all-registers |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
966 The registers buffer displays the values held by the registers |
67231
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
967 (@pxref{Registers,,, gdb, The GNU debugger}). Press @key{RET} or |
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
968 click @kbd{Mouse-2} on a register if you want to change its value. |
c0926bb237e2
(GDB User Interface Layout): Describe how to kill associated buffers.
Nick Roberts <nickrob@snap.net.nz>
parents:
67074
diff
changeset
|
969 Press @key{SPC} to toggle the display of floating point registers |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
970 (@code{toggle-gdb-all-registers}). |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
971 |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
972 @item Assembler Buffer |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
973 The assembler buffer displays the current frame as machine code. An |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
974 overlay arrow points to the current instruction and you can set and |
59825
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
975 remove breakpoints as with the source buffer. Breakpoint icons also |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
976 appear in the fringe or margin. |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
977 |
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
978 @item Threads Buffer |
65881
6d77eb5953d0
(GDB Graphical Interface): Add variables and
Nick Roberts <nickrob@snap.net.nz>
parents:
65024
diff
changeset
|
979 @findex gdb-threads-select |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
980 The threads buffer displays a summary of all threads currently in your |
65974
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
981 program (@pxref{Threads, Threads, Debugging programs with multiple |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
982 threads, gdb, The GNU debugger}). Move point to any thread in the |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
983 list and press @key{RET} to select it (@code{gdb-threads-select}) and |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
984 display the associated source in the source buffer. Alternatively, |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
985 click @kbd{Mouse-2} on a thread to select it. If the locals buffer is |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
986 displayed then its contents update to display the variables that are |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
987 local to the new thread. |
53254
cc4a96fa8f08
(Watch Expressions): Update.
Nick Roberts <nickrob@snap.net.nz>
parents:
52907
diff
changeset
|
988 |
59825
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
989 @item Memory Buffer |
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
990 The memory buffer allows the user to examine sections of program |
65974
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
991 memory (@pxref{Memory, Memory, Examining memory, gdb, The GNU |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
992 debugger}). Click @kbd{Mouse-1} on the appropriate part of the header |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
993 line to change the starting address or number of data items that the |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
994 buffer displays. Click @kbd{Mouse-3} on the header line to select the |
ef546abd2887
(GDB User Interface Layout): Improve diagram.
Nick Roberts <nickrob@snap.net.nz>
parents:
65881
diff
changeset
|
995 display format or unit size for these data items. |
59825
c20149ca0bba
Update documentation relating to GDB Graphical
Nick Roberts <nickrob@snap.net.nz>
parents:
59688
diff
changeset
|
996 |
51296
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
997 @end table |
35bdcc98e5b1
(GDB Graphical Interface): New node (rewritten somewhat by RMS).
Richard M. Stallman <rms@gnu.org>
parents:
50475
diff
changeset
|
998 |
25829 | 999 @node Executing Lisp |
1000 @section Executing Lisp Expressions | |
1001 | |
1002 Emacs has several different major modes for Lisp and Scheme. They are | |
1003 the same in terms of editing commands, but differ in the commands for | |
1004 executing Lisp expressions. Each mode has its own purpose. | |
1005 | |
1006 @table @asis | |
1007 @item Emacs-Lisp mode | |
1008 The mode for editing source files of programs to run in Emacs Lisp. | |
1009 This mode defines @kbd{C-M-x} to evaluate the current defun. | |
1010 @xref{Lisp Libraries}. | |
1011 @item Lisp Interaction mode | |
1012 The mode for an interactive session with Emacs Lisp. It defines | |
1013 @kbd{C-j} to evaluate the sexp before point and insert its value in the | |
1014 buffer. @xref{Lisp Interaction}. | |
1015 @item Lisp mode | |
1016 The mode for editing source files of programs that run in Lisps other | |
1017 than Emacs Lisp. This mode defines @kbd{C-M-x} to send the current defun | |
1018 to an inferior Lisp process. @xref{External Lisp}. | |
1019 @item Inferior Lisp mode | |
1020 The mode for an interactive session with an inferior Lisp process. | |
1021 This mode combines the special features of Lisp mode and Shell mode | |
1022 (@pxref{Shell Mode}). | |
1023 @item Scheme mode | |
1024 Like Lisp mode but for Scheme programs. | |
1025 @item Inferior Scheme mode | |
1026 The mode for an interactive session with an inferior Scheme process. | |
1027 @end table | |
1028 | |
1029 Most editing commands for working with Lisp programs are in fact | |
1030 available globally. @xref{Programs}. | |
1031 | |
1032 @node Lisp Libraries | |
1033 @section Libraries of Lisp Code for Emacs | |
1034 @cindex libraries | |
1035 @cindex loading Lisp code | |
1036 | |
1037 Lisp code for Emacs editing commands is stored in files whose names | |
1038 conventionally end in @file{.el}. This ending tells Emacs to edit them in | |
1039 Emacs-Lisp mode (@pxref{Executing Lisp}). | |
1040 | |
1041 @findex load-file | |
1042 To execute a file of Emacs Lisp code, use @kbd{M-x load-file}. This | |
1043 command reads a file name using the minibuffer and then executes the | |
1044 contents of that file as Lisp code. It is not necessary to visit the | |
1045 file first; in any case, this command reads the file as found on disk, | |
1046 not text in an Emacs buffer. | |
1047 | |
1048 @findex load | |
1049 @findex load-library | |
1050 Once a file of Lisp code is installed in the Emacs Lisp library | |
1051 directories, users can load it using @kbd{M-x load-library}. Programs can | |
1052 load it by calling @code{load-library}, or with @code{load}, a more primitive | |
1053 function that is similar but accepts some additional arguments. | |
1054 | |
1055 @kbd{M-x load-library} differs from @kbd{M-x load-file} in that it | |
1056 searches a sequence of directories and tries three file names in each | |
1057 directory. Suppose your argument is @var{lib}; the three names are | |
1058 @file{@var{lib}.elc}, @file{@var{lib}.el}, and lastly just | |
1059 @file{@var{lib}}. If @file{@var{lib}.elc} exists, it is by convention | |
1060 the result of compiling @file{@var{lib}.el}; it is better to load the | |
1061 compiled file, since it will load and run faster. | |
1062 | |
1063 If @code{load-library} finds that @file{@var{lib}.el} is newer than | |
38943
4dd9aeae2f84
Don't use "prints" except for printers.
Richard M. Stallman <rms@gnu.org>
parents:
38743
diff
changeset
|
1064 @file{@var{lib}.elc} file, it issues a warning, because it's likely that |
25829 | 1065 somebody made changes to the @file{.el} file and forgot to recompile |
1066 it. | |
1067 | |
1068 Because the argument to @code{load-library} is usually not in itself | |
1069 a valid file name, file name completion is not available. Indeed, when | |
1070 using this command, you usually do not know exactly what file name | |
1071 will be used. | |
1072 | |
1073 @vindex load-path | |
1074 The sequence of directories searched by @kbd{M-x load-library} is | |
1075 specified by the variable @code{load-path}, a list of strings that are | |
1076 directory names. The default value of the list contains the directory where | |
1077 the Lisp code for Emacs itself is stored. If you have libraries of | |
1078 your own, put them in a single directory and add that directory | |
1079 to @code{load-path}. @code{nil} in this list stands for the current default | |
1080 directory, but it is probably not a good idea to put @code{nil} in the | |
1081 list. If you find yourself wishing that @code{nil} were in the list, | |
1082 most likely what you really want to do is use @kbd{M-x load-file} | |
1083 this once. | |
1084 | |
1085 @cindex autoload | |
1086 Often you do not have to give any command to load a library, because | |
1087 the commands defined in the library are set up to @dfn{autoload} that | |
1088 library. Trying to run any of those commands calls @code{load} to load | |
1089 the library; this replaces the autoload definitions with the real ones | |
1090 from the library. | |
1091 | |
1092 @cindex byte code | |
1093 Emacs Lisp code can be compiled into byte-code which loads faster, | |
1094 takes up less space when loaded, and executes faster. @xref{Byte | |
1095 Compilation,, Byte Compilation, elisp, the Emacs Lisp Reference Manual}. | |
1096 By convention, the compiled code for a library goes in a separate file | |
1097 whose name consists of the library source file with @samp{c} appended. | |
1098 Thus, the compiled code for @file{foo.el} goes in @file{foo.elc}. | |
1099 That's why @code{load-library} searches for @samp{.elc} files first. | |
1100 | |
31027
561ef681eab5
Document load-dangerous-libraries.
Eli Zaretskii <eliz@gnu.org>
parents:
28431
diff
changeset
|
1101 @vindex load-dangerous-libraries |
561ef681eab5
Document load-dangerous-libraries.
Eli Zaretskii <eliz@gnu.org>
parents:
28431
diff
changeset
|
1102 @cindex Lisp files byte-compiled by XEmacs |
36144
22f75550e788
Rewrite discussion of load-dangerous-libraries.
Richard M. Stallman <rms@gnu.org>
parents:
34935
diff
changeset
|
1103 By default, Emacs refuses to load compiled Lisp files which were |
22f75550e788
Rewrite discussion of load-dangerous-libraries.
Richard M. Stallman <rms@gnu.org>
parents:
34935
diff
changeset
|
1104 compiled with XEmacs, a modified versions of Emacs---they can cause |
22f75550e788
Rewrite discussion of load-dangerous-libraries.
Richard M. Stallman <rms@gnu.org>
parents:
34935
diff
changeset
|
1105 Emacs to crash. Set the variable @code{load-dangerous-libraries} to |
22f75550e788
Rewrite discussion of load-dangerous-libraries.
Richard M. Stallman <rms@gnu.org>
parents:
34935
diff
changeset
|
1106 @code{t} if you want to try loading them. |
31027
561ef681eab5
Document load-dangerous-libraries.
Eli Zaretskii <eliz@gnu.org>
parents:
28431
diff
changeset
|
1107 |
25829 | 1108 @node Lisp Eval |
58369
a54b2a5402d6
(Lisp Eval): Delete hyphen in section name.
Richard M. Stallman <rms@gnu.org>
parents:
57348
diff
changeset
|
1109 @section Evaluating Emacs Lisp Expressions |
25829 | 1110 @cindex Emacs-Lisp mode |
1111 @cindex mode, Emacs-Lisp | |
1112 | |
1113 @findex emacs-lisp-mode | |
1114 Lisp programs intended to be run in Emacs should be edited in | |
1115 Emacs-Lisp mode; this happens automatically for file names ending in | |
1116 @file{.el}. By contrast, Lisp mode itself is used for editing Lisp | |
1117 programs intended for other Lisp systems. To switch to Emacs-Lisp mode | |
1118 explicitly, use the command @kbd{M-x emacs-lisp-mode}. | |
1119 | |
1120 For testing of Lisp programs to run in Emacs, it is often useful to | |
1121 evaluate part of the program as it is found in the Emacs buffer. For | |
1122 example, after changing the text of a Lisp function definition, | |
1123 evaluating the definition installs the change for future calls to the | |
1124 function. Evaluation of Lisp expressions is also useful in any kind of | |
1125 editing, for invoking noninteractive functions (functions that are | |
1126 not commands). | |
1127 | |
1128 @table @kbd | |
1129 @item M-: | |
1130 Read a single Lisp expression in the minibuffer, evaluate it, and print | |
1131 the value in the echo area (@code{eval-expression}). | |
1132 @item C-x C-e | |
1133 Evaluate the Lisp expression before point, and print the value in the | |
1134 echo area (@code{eval-last-sexp}). | |
1135 @item C-M-x | |
1136 Evaluate the defun containing or after point, and print the value in | |
1137 the echo area (@code{eval-defun}). | |
1138 @item M-x eval-region | |
1139 Evaluate all the Lisp expressions in the region. | |
1140 @item M-x eval-current-buffer | |
1141 Evaluate all the Lisp expressions in the buffer. | |
1142 @end table | |
1143 | |
44116
1fc0cc0bb3ab
Use `colon' instead of `:' in an index only in the Info version.
Eli Zaretskii <eliz@gnu.org>
parents:
43889
diff
changeset
|
1144 @ifinfo |
43889
c5ea7e769ffd
(Electric C, Lisp Eval): Avoid makeinfo warnings about colons in indices.
Eli Zaretskii <eliz@gnu.org>
parents:
43151
diff
changeset
|
1145 @c This uses ``colon'' instead of a literal `:' because Info cannot |
c5ea7e769ffd
(Electric C, Lisp Eval): Avoid makeinfo warnings about colons in indices.
Eli Zaretskii <eliz@gnu.org>
parents:
43151
diff
changeset
|
1146 @c cope with a `:' in a menu |
c5ea7e769ffd
(Electric C, Lisp Eval): Avoid makeinfo warnings about colons in indices.
Eli Zaretskii <eliz@gnu.org>
parents:
43151
diff
changeset
|
1147 @kindex M-@key{colon} |
44116
1fc0cc0bb3ab
Use `colon' instead of `:' in an index only in the Info version.
Eli Zaretskii <eliz@gnu.org>
parents:
43889
diff
changeset
|
1148 @end ifinfo |
1fc0cc0bb3ab
Use `colon' instead of `:' in an index only in the Info version.
Eli Zaretskii <eliz@gnu.org>
parents:
43889
diff
changeset
|
1149 @ifnotinfo |
1fc0cc0bb3ab
Use `colon' instead of `:' in an index only in the Info version.
Eli Zaretskii <eliz@gnu.org>
parents:
43889
diff
changeset
|
1150 @kindex M-: |
1fc0cc0bb3ab
Use `colon' instead of `:' in an index only in the Info version.
Eli Zaretskii <eliz@gnu.org>
parents:
43889
diff
changeset
|
1151 @end ifnotinfo |
25829 | 1152 @findex eval-expression |
1153 @kbd{M-:} (@code{eval-expression}) is the most basic command for evaluating | |
1154 a Lisp expression interactively. It reads the expression using the | |
1155 minibuffer, so you can execute any expression on a buffer regardless of | |
1156 what the buffer contains. When the expression is evaluated, the current | |
1157 buffer is once again the buffer that was current when @kbd{M-:} was | |
1158 typed. | |
1159 | |
1160 @kindex C-M-x @r{(Emacs-Lisp mode)} | |
1161 @findex eval-defun | |
1162 In Emacs-Lisp mode, the key @kbd{C-M-x} is bound to the command | |
1163 @code{eval-defun}, which parses the defun containing or following point | |
1164 as a Lisp expression and evaluates it. The value is printed in the echo | |
1165 area. This command is convenient for installing in the Lisp environment | |
1166 changes that you have just made in the text of a function definition. | |
1167 | |
1168 @kbd{C-M-x} treats @code{defvar} expressions specially. Normally, | |
1169 evaluating a @code{defvar} expression does nothing if the variable it | |
1170 defines already has a value. But @kbd{C-M-x} unconditionally resets the | |
1171 variable to the initial value specified in the @code{defvar} expression. | |
28431
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1172 @code{defcustom} expressions are treated similarly. |
25829 | 1173 This special feature is convenient for debugging Lisp programs. |
56007
8446511392c6
(Lisp Eval): Add C-M-x on defface.
Juri Linkov <juri@jurta.org>
parents:
55577
diff
changeset
|
1174 Typing @kbd{C-M-x} on a @code{defface} expression reinitializes |
8446511392c6
(Lisp Eval): Add C-M-x on defface.
Juri Linkov <juri@jurta.org>
parents:
55577
diff
changeset
|
1175 the face according to the @code{defface} specification. |
25829 | 1176 |
1177 @kindex C-x C-e | |
1178 @findex eval-last-sexp | |
1179 The command @kbd{C-x C-e} (@code{eval-last-sexp}) evaluates the Lisp | |
1180 expression preceding point in the buffer, and displays the value in the | |
1181 echo area. It is available in all major modes, not just Emacs-Lisp | |
1182 mode. It does not treat @code{defvar} specially. | |
1183 | |
60789
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
1184 When the result of an evaluation is an integer, you can type |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
1185 @kbd{C-x C-e} a second time to display the value of the integer result |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
1186 in additional formats (octal, hexadecimal, and character). |
e1f3e09e22da
(Starting GUD): Add bashdb.
Richard M. Stallman <rms@gnu.org>
parents:
60594
diff
changeset
|
1187 |
62741
718dc622c12e
(Lisp Eval): C-M-x with arg runs Edebug.
Richard M. Stallman <rms@gnu.org>
parents:
62666
diff
changeset
|
1188 If @kbd{C-x C-e}, or @kbd{M-:} is given a numeric argument, it |
718dc622c12e
(Lisp Eval): C-M-x with arg runs Edebug.
Richard M. Stallman <rms@gnu.org>
parents:
62666
diff
changeset
|
1189 inserts the value into the current buffer at point, rather than |
718dc622c12e
(Lisp Eval): C-M-x with arg runs Edebug.
Richard M. Stallman <rms@gnu.org>
parents:
62666
diff
changeset
|
1190 displaying it in the echo area. The argument's value does not matter. |
718dc622c12e
(Lisp Eval): C-M-x with arg runs Edebug.
Richard M. Stallman <rms@gnu.org>
parents:
62666
diff
changeset
|
1191 @kbd{C-M-x} with a numeric argument instruments the function |
718dc622c12e
(Lisp Eval): C-M-x with arg runs Edebug.
Richard M. Stallman <rms@gnu.org>
parents:
62666
diff
changeset
|
1192 definition for Edebug (@pxref{Instrumenting, Instrumenting for Edebug,, elisp, the Emacs Lisp Reference Manual}). |
25829 | 1193 |
1194 @findex eval-region | |
1195 @findex eval-current-buffer | |
1196 The most general command for evaluating Lisp expressions from a buffer | |
1197 is @code{eval-region}. @kbd{M-x eval-region} parses the text of the | |
1198 region as one or more Lisp expressions, evaluating them one by one. | |
1199 @kbd{M-x eval-current-buffer} is similar but evaluates the entire | |
1200 buffer. This is a reasonable way to install the contents of a file of | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38202
diff
changeset
|
1201 Lisp code that you are ready to test. Later, as you find bugs and |
25829 | 1202 change individual functions, use @kbd{C-M-x} on each function that you |
1203 change. This keeps the Lisp world in step with the source file. | |
1204 | |
28431
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1205 @vindex eval-expression-print-level |
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1206 @vindex eval-expression-print-length |
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1207 @vindex eval-expression-debug-on-error |
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1208 The customizable variables @code{eval-expression-print-level} and |
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1209 @code{eval-expression-print-length} control the maximum depth and length |
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1210 of lists to print in the result of the evaluation commands before |
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1211 abbreviating them. @code{eval-expression-debug-on-error} controls |
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1212 whether evaluation errors invoke the debugger when these commands are |
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1213 used. |
315d6e79ea38
Overlay arrow in margin. eval-expression variables.
Dave Love <fx@gnu.org>
parents:
27223
diff
changeset
|
1214 |
25829 | 1215 @node Lisp Interaction |
1216 @section Lisp Interaction Buffers | |
1217 | |
1218 The buffer @samp{*scratch*} which is selected when Emacs starts up is | |
1219 provided for evaluating Lisp expressions interactively inside Emacs. | |
1220 | |
1221 The simplest way to use the @samp{*scratch*} buffer is to insert Lisp | |
1222 expressions and type @kbd{C-j} after each expression. This command | |
1223 reads the Lisp expression before point, evaluates it, and inserts the | |
1224 value in printed representation before point. The result is a complete | |
1225 typescript of the expressions you have evaluated and their values. | |
1226 | |
1227 The @samp{*scratch*} buffer's major mode is Lisp Interaction mode, which | |
1228 is the same as Emacs-Lisp mode except for the binding of @kbd{C-j}. | |
1229 | |
1230 @findex lisp-interaction-mode | |
1231 The rationale for this feature is that Emacs must have a buffer when | |
1232 it starts up, but that buffer is not useful for editing files since a | |
1233 new buffer is made for every file that you visit. The Lisp interpreter | |
1234 typescript is the most useful thing I can think of for the initial | |
1235 buffer to do. Type @kbd{M-x lisp-interaction-mode} to put the current | |
1236 buffer in Lisp Interaction mode. | |
1237 | |
1238 @findex ielm | |
1239 An alternative way of evaluating Emacs Lisp expressions interactively | |
1240 is to use Inferior Emacs-Lisp mode, which provides an interface rather | |
1241 like Shell mode (@pxref{Shell Mode}) for evaluating Emacs Lisp | |
1242 expressions. Type @kbd{M-x ielm} to create an @samp{*ielm*} buffer | |
1243 which uses this mode. | |
1244 | |
1245 @node External Lisp | |
1246 @section Running an External Lisp | |
1247 | |
1248 Emacs has facilities for running programs in other Lisp systems. You can | |
1249 run a Lisp process as an inferior of Emacs, and pass expressions to it to | |
1250 be evaluated. You can also pass changed function definitions directly from | |
1251 the Emacs buffers in which you edit the Lisp programs to the inferior Lisp | |
1252 process. | |
1253 | |
1254 @findex run-lisp | |
1255 @vindex inferior-lisp-program | |
1256 @kindex C-x C-z | |
1257 To run an inferior Lisp process, type @kbd{M-x run-lisp}. This runs | |
1258 the program named @code{lisp}, the same program you would run by typing | |
1259 @code{lisp} as a shell command, with both input and output going through | |
1260 an Emacs buffer named @samp{*lisp*}. That is to say, any ``terminal | |
1261 output'' from Lisp will go into the buffer, advancing point, and any | |
1262 ``terminal input'' for Lisp comes from text in the buffer. (You can | |
1263 change the name of the Lisp executable file by setting the variable | |
1264 @code{inferior-lisp-program}.) | |
1265 | |
1266 To give input to Lisp, go to the end of the buffer and type the input, | |
1267 terminated by @key{RET}. The @samp{*lisp*} buffer is in Inferior Lisp | |
1268 mode, which combines the special characteristics of Lisp mode with most | |
1269 of the features of Shell mode (@pxref{Shell Mode}). The definition of | |
1270 @key{RET} to send a line to a subprocess is one of the features of Shell | |
1271 mode. | |
1272 | |
1273 @findex lisp-mode | |
1274 For the source files of programs to run in external Lisps, use Lisp | |
1275 mode. This mode can be selected with @kbd{M-x lisp-mode}, and is used | |
1276 automatically for files whose names end in @file{.l}, @file{.lsp}, or | |
1277 @file{.lisp}, as most Lisp systems usually expect. | |
1278 | |
1279 @kindex C-M-x @r{(Lisp mode)} | |
1280 @findex lisp-eval-defun | |
1281 When you edit a function in a Lisp program you are running, the easiest | |
1282 way to send the changed definition to the inferior Lisp process is the key | |
1283 @kbd{C-M-x}. In Lisp mode, this runs the function @code{lisp-eval-defun}, | |
1284 which finds the defun around or following point and sends it as input to | |
1285 the Lisp process. (Emacs can send input to any inferior process regardless | |
1286 of what buffer is current.) | |
1287 | |
1288 Contrast the meanings of @kbd{C-M-x} in Lisp mode (for editing programs | |
1289 to be run in another Lisp system) and Emacs-Lisp mode (for editing Lisp | |
1290 programs to be run in Emacs): in both modes it has the effect of installing | |
1291 the function definition that point is in, but the way of doing so is | |
1292 different according to where the relevant Lisp environment is found. | |
1293 @xref{Executing Lisp}. | |
52401 | 1294 |
1295 @ignore | |
1296 arch-tag: 9c3c2f71-b332-4144-8500-3ff9945a50ed | |
1297 @end ignore |