Mercurial > emacs
changeset 99269:ebbe1bbf1346
(Compilation Mode): Document
compilation-auto-jump-to-first-error.
(Debuggers): Lower GUD subsections to subsubsections.
(Starting GUD): Add cindex.
(Lisp Interaction): Note that scratch is no longer the initial buffer.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Fri, 31 Oct 2008 06:16:20 +0000 |
parents | f38b9c436e4c |
children | 6ba9d77e4787 |
files | doc/emacs/building.texi |
diffstat | 1 files changed, 79 insertions(+), 60 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/emacs/building.texi Fri Oct 31 06:16:10 2008 +0000 +++ b/doc/emacs/building.texi Fri Oct 31 06:16:20 2008 +0000 @@ -65,7 +65,7 @@ @vindex compile-command The default for the compilation command is normally @samp{make -k}, which is correct most of the time for nontrivial programs. -(@xref{Top,, Make, make, GNU Make Manual}.) If you have done @kbd{M-x +@xref{Top,, Make, make, GNU Make Manual}. If you have done @kbd{M-x compile} before, the default each time is the command you used the previous time. @code{compile} stores this command in the variable @code{compile-command}, so setting that variable specifies the default @@ -194,11 +194,15 @@ @end table @findex compile-goto-error +@vindex compilation-auto-jump-to-first-error You can visit the source for any particular error message by moving point in the @samp{*compilation*} buffer to that error message and typing @key{RET} (@code{compile-goto-error}). Alternatively, you can click @kbd{Mouse-2} on the error message; you need not switch to the -@samp{*compilation*} buffer first. +@samp{*compilation*} buffer first. If you set the variable +@code{compilation-auto-jump-to-first-error} to a non-@code{nil} value, +Emacs automatically jumps to the first error (if any exists) once +compilation finishes. @kindex M-g M-n @kindex M-g n @@ -442,6 +446,36 @@ @cindex debuggers @cindex GUD library @cindex GDB + +Emacs provides two separate facilities for using external symbolic +debuggers, which are programs for testing and debugging other +programs: +@itemize @bullet +@item +The Grand Unified Debugger (GUD) provides a simple, text-based +interface for a wide variety of symbolic debuggers, including the GNU +Debugger (GDB), the Perl debugger, the Python debugger, and the Java +Debugger. + +@item +The GDB Graphical Interface is an Emacs package that interacts with +GDB to turn Emacs into a graphical ``integrated development +environment'', or IDE. +@end itemize + + In addition, Emacs contains a built-in system for debugging Emacs +Lisp programs. @xref{Debugging,, The Lisp Debugger, elisp, the Emacs +Lisp Reference Manual}, for information on the Emacs Lisp debugger. + +@menu +* GUD:: The Grand Unified Debugger. +* GDB Graphical Interface:: A mode that uses GDB features to implement + a graphical Emacs debugging environment. +@end menu + +@node GUD +@subsection GUD +@cindex GUD library @cindex DBX @cindex SDB @cindex XDB @@ -450,68 +484,55 @@ @cindex PDB @c Do you believe in GUD? -The GUD (Grand Unified Debugger) library provides an interface to -various symbolic debuggers from within Emacs. We recommend the -debugger GDB, which is free software, but GUD can also run DBX, SDB or -XDB. GUD can also serve as an interface to Perl's debugging mode, the -Python debugger PDB, and to JDB, the Java Debugger. -@xref{Debugging,, The Lisp Debugger, elisp, the Emacs Lisp Reference -Manual}, for information on debugging Emacs Lisp programs. +The GUD (Grand Unified Debugger) library provides an Emacs interface +to a wide variety of symbolic debuggers. Unlike the GDB graphical +interface, which only runs GDB (@pxref{GDB Graphical Interface}), GUD +can also run DBX, SDB, XDB, Perl's debugging mode, the Python debugger +PDB, or the Java Debugger JDB. @menu * Starting GUD:: How to start a debugger subprocess. * Debugger Operation:: Connection between the debugger and source buffers. * Commands of GUD:: Key bindings for common commands. * GUD Customization:: Defining your own commands for GUD. -* GDB Graphical Interface:: An enhanced mode that uses GDB features to - implement a graphical debugging environment through - Emacs. @end menu @node Starting GUD -@subsection Starting GUD +@subsubsection Starting GUD - There are several commands for starting a debugger, each corresponding -to a particular debugger program. + There are several commands for starting a debugger under GUD, each +corresponding to a particular debugger program. @table @kbd -@item M-x gdb @key{RET} @var{file} @key{RET} -@findex gdb -Run GDB as a subprocess of Emacs. This uses an IDE-like graphical -interface; see @ref{GDB Graphical Interface}. Only GDB works with the -graphical interface. - @item M-x gud-gdb @key{RET} @var{file} @key{RET} @findex gud-gdb Run GDB as a subprocess of Emacs. This command creates a buffer for input and output to GDB, and switches to it. If a GDB buffer already -exists, it just switches to that buffer. +exists, it just switches to that buffer. (To run GDB in an IDE-like +graphical interface instead, see @ref{GDB Graphical Interface}.) @item M-x dbx @key{RET} @var{file} @key{RET} @findex dbx -Run DBX as a subprocess of Emacs. Since Emacs does not implement a -graphical interface for DBX, communication with DBX works by typing -commands in the GUD interaction buffer. The same is true for all -the other supported debuggers. +Run DBX as a subprocess of Emacs. @item M-x xdb @key{RET} @var{file} @key{RET} @findex xdb @vindex gud-xdb-directories -Similar, but run XDB. Use the variable +Run XDB as a subprocess of Emacs. Use the variable @code{gud-xdb-directories} to specify directories to search for source files. @item M-x sdb @key{RET} @var{file} @key{RET} @findex sdb -Similar, but run SDB. +Run SDB as a subprocess of Emacs. - Some versions of SDB do not mention source file names in their +Some versions of SDB do not mention source file names in their messages. When you use them, you need to have a valid tags table (@pxref{Tags}) in order for GUD to find functions in the source code. -If you have not visited a tags table or the tags table doesn't list one -of the functions, you get a message saying @samp{The sdb support -requires a valid tags table to work}. If this happens, generate a valid -tags table in the working directory and try again. +If you have not visited a tags table or the tags table doesn't list +one of the functions, you get a message saying @samp{The sdb support +requires a valid tags table to work}. If this happens, generate a +valid tags table in the working directory and try again. @item M-x perldb @key{RET} @var{file} @key{RET} @findex perldb @@ -533,7 +554,7 @@ allowed. GUD assumes that the first argument not starting with a @samp{-} is the executable file name. -@c Running a debugger on a remote host +@cindex remote host, debugging on Tramp provides a facility to debug programs on remote hosts (@pxref{Running a debugger on a remote host, Running a debugger on a remote host,, tramp, The Tramp Manual}), whereby both the debugger and @@ -544,7 +565,7 @@ Debugging Remote Programs, gdb, The GNU debugger}). @node Debugger Operation -@subsection Debugger Operation +@subsubsection Debugger Operation @cindex fringes, and current execution line in GUD Generally when you run a debugger with GUD, the debugger uses an Emacs @@ -591,7 +612,7 @@ effects. @node Commands of GUD -@subsection Commands of GUD +@subsubsection Commands of GUD The GUD interaction buffer uses a variant of Shell mode, so the Emacs commands of Shell mode are available (@pxref{Shell Mode}). All @@ -748,7 +769,7 @@ Instead, type @kbd{C-q @key{TAB}} to enter a tab. @node GUD Customization -@subsection GUD Customization +@subsubsection GUD Customization @vindex gdb-mode-hook @vindex dbx-mode-hook @@ -823,13 +844,13 @@ @node GDB Graphical Interface @subsection GDB Graphical Interface - By default, the command @code{gdb} starts GDB using a graphical -interface, using Emacs windows for display program state information. -In effect, this makes Emacs into an IDE (interactive development -environment). With it, you do not need to use textual GDB commands; -you can control the debugging session with the mouse. For example, -you can click in the fringe of a source buffer to set a breakpoint -there, or on a stack frame in the stack buffer to select that frame. + The command @code{gdb} starts GDB in a graphical interface, using +Emacs windows for display program state information. In effect, this +makes Emacs into an IDE (interactive development environment). With +it, you do not need to use textual GDB commands; you can control the +debugging session with the mouse. For example, you can click in the +fringe of a source buffer to set a breakpoint there, or on a stack +frame in the stack buffer to select that frame. This mode requires telling GDB that its ``screen size'' is unlimited, so it sets the height and width accordingly. For correct @@ -1382,25 +1403,23 @@ @node Lisp Interaction @section Lisp Interaction Buffers - The buffer @samp{*scratch*} which is selected when Emacs starts up is -provided for evaluating Lisp expressions interactively inside Emacs. + When Emacs starts up, it contains a buffer named @samp{*scratch*}, +which is provided for evaluating Lisp expressions interactively inside +Emacs. Its major mode is Lisp Interaction mode. - The simplest way to use the @samp{*scratch*} buffer is to insert Lisp -expressions and type @kbd{C-j} after each expression. This command -reads the Lisp expression before point, evaluates it, and inserts the -value in printed representation before point. The result is a complete -typescript of the expressions you have evaluated and their values. - - The @samp{*scratch*} buffer's major mode is Lisp Interaction mode, which -is the same as Emacs-Lisp mode except for the binding of @kbd{C-j}. +@findex eval-print-last-sexp +@kindex C-j @r{(Lisp Interaction mode)} + The simplest way to use the @samp{*scratch*} buffer is to insert +Lisp expressions and type @kbd{C-j} (@code{eval-print-last-sexp}) +after each expression. This command reads the Lisp expression before +point, evaluates it, and inserts the value in printed representation +before point. The result is a complete typescript of the expressions +you have evaluated and their values. @findex lisp-interaction-mode - The rationale for this feature is that Emacs must have a buffer when -it starts up, but that buffer is not useful for editing files since a -new buffer is made for every file that you visit. The Lisp interpreter -typescript is the most useful thing I can think of for the initial -buffer to do. Type @kbd{M-x lisp-interaction-mode} to put the current -buffer in Lisp Interaction mode. + All other commands in Lisp Interaction mode are the same as in Emacs +Lisp mode. You can enable Lisp Interaction mode by typing @kbd{M-x +lisp-interaction-mode}. @findex ielm An alternative way of evaluating Emacs Lisp expressions interactively