Annotation of 43BSDReno/contrib/emacs-18.55/man/gdb.texinfo, revision 1.1

1.1     ! root        1: \input texinfo
        !             2: @setfilename ../info/gdb
        !             3: @settitle GDB, The GNU Debugger
        !             4: @ifinfo
        !             5: This file documents the GNU debugger GDB.
        !             6: 
        !             7: Copyright (C) 1988 Free Software Foundation, Inc.
        !             8: 
        !             9: Permission is granted to make and distribute verbatim copies of
        !            10: this manual provided the copyright notice and this permission notice
        !            11: are preserved on all copies.
        !            12: 
        !            13: @ignore
        !            14: Permission is granted to process this file through Tex and print the
        !            15: results, provided the printed document carries copying permission
        !            16: notice identical to this one except for the removal of this paragraph
        !            17: (this paragraph not being relevant to the printed manual).
        !            18: 
        !            19: @end ignore
        !            20: Permission is granted to copy and distribute modified versions of this
        !            21: manual under the conditions for verbatim copying, provided also that the
        !            22: sections entitled ``Distribution'' and ``GDB General Public License'' are
        !            23: included exactly as in the original, and provided that the entire resulting
        !            24: derived work is distributed under the terms of a permission notice
        !            25: identical to this one.
        !            26: 
        !            27: Permission is granted to copy and distribute translations of this manual
        !            28: into another language, under the above conditions for modified versions,
        !            29: except that the sections entitled ``Distribution'' and ``GDB General Public
        !            30: License'' may be included in a translation approved by the author instead
        !            31: of in the original English.
        !            32: @end ifinfo
        !            33: 
        !            34: @setchapternewpage odd
        !            35: @settitle GDB Manual
        !            36: @titlepage
        !            37: @sp 6
        !            38: @center @titlefont{GDB Manual}
        !            39: @sp 1
        !            40: @center The GNU Source-Level Debugger
        !            41: @sp 4
        !            42: @center Second Edition, GDB version 2.5
        !            43: @sp 1
        !            44: @center February 1988
        !            45: @sp 5
        !            46: @center Richard M. Stallman
        !            47: @page
        !            48: @vskip 0pt plus 1filll
        !            49: Copyright @copyright{} 1988 Free Software Foundation, Inc.
        !            50: 
        !            51: Permission is granted to make and distribute verbatim copies of
        !            52: this manual provided the copyright notice and this permission notice
        !            53: are preserved on all copies.
        !            54: 
        !            55: Permission is granted to copy and distribute modified versions of this
        !            56: manual under the conditions for verbatim copying, provided also that the
        !            57: sections entitled ``Distribution'' and ``GDB General Public License'' are
        !            58: included exactly as in the original, and provided that the entire resulting
        !            59: derived work is distributed under the terms of a permission notice
        !            60: identical to this one.
        !            61: 
        !            62: Permission is granted to copy and distribute translations of this manual
        !            63: into another language, under the above conditions for modified versions,
        !            64: except that the sections entitled ``Distribution'' and ``GDB General Public
        !            65: License'' may be included in a translation approved by the author instead
        !            66: of in the original English.
        !            67: @end titlepage
        !            68: @page
        !            69: 
        !            70: @node Top, Commands,, (DIR)
        !            71: @unnumbered Summary of GDB
        !            72: 
        !            73: The purpose of a debugger such as GDB is to allow you to execute another
        !            74: program while examining what is going on inside it.  We call the other
        !            75: program ``your program'' or ``the program being debugged''.
        !            76: 
        !            77: GDB can do four kinds of things (plus other things in support of these):
        !            78: 
        !            79: @enumerate
        !            80: @item
        !            81: Start the program, specifying anything that might affect its behavior.
        !            82: 
        !            83: @item
        !            84: Make the program stop on specified conditions.
        !            85: 
        !            86: @item
        !            87: Examine what has happened, when the program has stopped, so that you
        !            88: can see bugs happen.
        !            89: 
        !            90: @item
        !            91: Change things in the program, so you can correct the effects of one bug
        !            92: and go on to learn about another without having to recompile first.
        !            93: @end enumerate
        !            94: 
        !            95: @menu
        !            96: * License::    The GDB General Public License gives you permission
        !            97:               to redistribute GDB on certain terms; and also
        !            98:               explains that there is no warranty.
        !            99: * Input::      GDB command syntax and input conventions.
        !           100: * Files::      Specifying files for GDB to operate on.
        !           101: * Options::    GDB arguments and options.
        !           102: * Compilation::Compiling your program so you can debug it.
        !           103: * Running::    Running your program under GDB.
        !           104: * Stopping::   Making your program stop.  Why it may stop.  What to do then.
        !           105: * Stack::      Examining your program's stack.
        !           106: * Source::     Examining your program's source files.
        !           107: * Data::       Examining data in your program.
        !           108: * Symbols::    Examining the debugger's symbol table.
        !           109: * Altering::   Altering things in your program.
        !           110: * Sequences::  Canned command sequences for repeated use.
        !           111: * Emacs::      Using GDB through GNU Emacs.
        !           112: * Remote::     Remote kernel debugging across a serial line.
        !           113: * Commands::   Index of GDB commands.
        !           114: * Concepts::   Index of GDB concepts.
        !           115: @end menu
        !           116: 
        !           117: @node License, Input, Top, Top
        !           118: @unnumbered GDB General Public License
        !           119: @center (Clarified 11 Feb 1988)
        !           120: 
        !           121:   The license agreements of most software companies keep you at the mercy
        !           122: of those companies.  By contrast, our general public license is intended to
        !           123: give everyone the right to share GDB.  To make sure that you get the rights
        !           124: we want you to have, we need to make restrictions that forbid anyone to
        !           125: deny you these rights or to ask you to surrender the rights.  Hence this
        !           126: license agreement.
        !           127: 
        !           128:   Specifically, we want to make sure that you have the right to give away
        !           129: copies of GDB, that you receive source code or else can get it if you want
        !           130: it, that you can change GDB or use pieces of it in new free programs, and
        !           131: that you know you can do these things.
        !           132: 
        !           133:   To make sure that everyone has such rights, we have to forbid you to
        !           134: deprive anyone else of these rights.  For example, if you distribute copies
        !           135: of GDB, you must give the recipients all the rights that you have.  You
        !           136: must make sure that they, too, receive or can get the source code.  And you
        !           137: must tell them their rights.
        !           138: 
        !           139:   Also, for our own protection, we must make certain that everyone finds
        !           140: out that there is no warranty for GDB.  If GDB is modified by someone else
        !           141: and passed on, we want its recipients to know that what they have is not
        !           142: what we distributed, so that any problems introduced by others will not
        !           143: reflect on our reputation.
        !           144: 
        !           145:   Therefore we (Richard Stallman and the Free Software Foundation,
        !           146: Inc.) make the following terms which say what you must do to be
        !           147: allowed to distribute or change GDB.
        !           148: 
        !           149: @unnumberedsec Copying Policies
        !           150: 
        !           151: @enumerate
        !           152: @item
        !           153: You may copy and distribute verbatim copies of GDB source code as you
        !           154: receive it, in any medium, provided that you conspicuously and
        !           155: appropriately publish on each file a valid copyright notice ``Copyright
        !           156: @copyright{} 1988 Free Software Foundation, Inc.'' (or with whatever year
        !           157: is appropriate); keep intact the notices on all files that
        !           158: refer to this License Agreement and to the absence of any warranty; and
        !           159: give any other recipients of the GDB program a copy of this License
        !           160: Agreement along with the program.  You may charge a distribution fee
        !           161: for the physical act of transferring a copy.
        !           162: 
        !           163: @item
        !           164: You may modify your copy or copies of GDB source code or any portion
        !           165: of it, and copy and distribute such modifications under the terms of
        !           166: Paragraph 1 above, provided that you also do the following:
        !           167: 
        !           168: @itemize @bullet
        !           169: @item
        !           170: cause the modified files to carry prominent notices stating
        !           171: that you changed the files and the date of any change; and
        !           172: 
        !           173: @item
        !           174: cause the whole of any work that you distribute or publish, that
        !           175: in whole or in part contains or is a derivative of GDB or any
        !           176: part thereof, to be licensed at no charge to all third parties on
        !           177: terms identical to those contained in this License Agreement
        !           178: (except that you may choose to grant more extensive warranty
        !           179: protection to some or all third parties, at your option).
        !           180: 
        !           181: @item
        !           182: if the modified program serves as a debugger, cause it, when
        !           183: started running in the simplest and usual way, to print an
        !           184: announcement including a valid copyright notice ``Copyright
        !           185: @copyright{} 1988 Free Software Foundation, Inc.'' (or with the
        !           186: year that is appropriate), saying that there is no warranty (or
        !           187: else, saying that you provide a warranty) and that users may
        !           188: redistribute the program under these conditions, and telling the
        !           189: user how to view a copy of this License Agreement.
        !           190: 
        !           191: @item
        !           192: You may charge a distribution fee for the physical act of
        !           193: transferring a copy, and you may at your option offer warranty
        !           194: protection in exchange for a fee.
        !           195: @end itemize
        !           196: 
        !           197: Mere aggregation of another unrelated program with this program (or its
        !           198: derivative) on a volume of a storage or distribution medium does not bring
        !           199: the other program under the scope of these terms.
        !           200: 
        !           201: @item
        !           202: You may copy and distribute GDB (or a portion or derivative of it,
        !           203: under Paragraph 2) in object code or executable form under the terms
        !           204: of Paragraphs 1 and 2 above provided that you also do one of the
        !           205: following:
        !           206: 
        !           207: @itemize @bullet
        !           208: @item
        !           209: accompany it with the complete corresponding machine-readable
        !           210: source code, which must be distributed under the terms of
        !           211: Paragraphs 1 and 2 above; or,
        !           212: 
        !           213: @item
        !           214: accompany it with a written offer, valid for at least three
        !           215: years, to give any third party free (except for a nominal
        !           216: shipping charge) a complete machine-readable copy of the
        !           217: corresponding source code, to be distributed under the terms of
        !           218: Paragraphs 1 and 2 above; or,
        !           219: 
        !           220: @item
        !           221: accompany it with the information you received as to where the
        !           222: corresponding source code may be obtained.  (This alternative is
        !           223: allowed only for noncommercial distribution and only if you
        !           224: received the program in object code or executable form alone.)
        !           225: @end itemize
        !           226: 
        !           227: For an executable file, complete source code means all the source code
        !           228: for all modules it contains; but, as a special exception, it need not
        !           229: include source code for modules which are standard libraries that
        !           230: accompany the operating system on which the executable file runs.
        !           231: 
        !           232: @item
        !           233: You may not copy, sublicense, distribute or transfer GDB except as
        !           234: expressly provided under this License Agreement.  Any attempt
        !           235: otherwise to copy, sublicense, distribute or transfer GDB is void and
        !           236: your rights to use GDB under this License agreement shall be
        !           237: automatically terminated.  However, parties who have received computer
        !           238: software programs from you with this License Agreement will not have
        !           239: their licenses terminated so long as such parties remain in full
        !           240: compliance.
        !           241: 
        !           242: @item
        !           243: If you wish to incorporate parts of GDB into other free programs whose
        !           244: distribution conditions are different, write to the Free Software
        !           245: Foundation.  We have not yet worked out a simple rule that can be
        !           246: stated here, but we will often permit this.  We will be guided by the
        !           247: two goals of preserving the free status of all derivatives our free
        !           248: software and of promoting the sharing and reuse of software.
        !           249: @end enumerate
        !           250: 
        !           251: @iftex
        !           252: @vfil
        !           253: @eject
        !           254: @end iftex
        !           255: @unnumberedsec NO WARRANTY
        !           256: 
        !           257:   BECAUSE GDB IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
        !           258: NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.  EXCEPT
        !           259: WHEN OTHERWISE STATED IN WRITING, THE FREE SOFTWARE FOUNDATION, INC,
        !           260: RICHARD M. STALLMAN AND/OR OTHER PARTIES PROVIDE GDB ``AS IS''
        !           261: WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
        !           262: BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
        !           263: FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY
        !           264: AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE GDB
        !           265: PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
        !           266: SERVICING, REPAIR OR CORRECTION.
        !           267: 
        !           268:  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL FREE SOFTWARE
        !           269: FOUNDATION, INC., RICHARD M. STALLMAN, AND/OR ANY OTHER PARTY WHO MAY
        !           270: MODIFY AND REDISTRIBUTE GDB AS PERMITTED ABOVE, BE LIABLE TO YOU
        !           271: FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER
        !           272: SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
        !           273: INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
        !           274: BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A
        !           275: FAILURE OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY
        !           276: FREE SOFTWARE FOUNDATION, INC.) THE PROGRAM, EVEN IF YOU HAVE BEEN
        !           277: ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY
        !           278: OTHER PARTY.
        !           279: 
        !           280: @node Input, Files, License, Top
        !           281: @chapter GDB Input Conventions
        !           282: 
        !           283: GDB is invoked with the shell command @samp{gdb}.  Once started, it reads
        !           284: commands from the terminal until you tell it to exit.
        !           285: 
        !           286: A GDB command is a single line of input.  There is no limit on how long
        !           287: it can be.  It starts with a command name, which is followed by arguments
        !           288: whose meaning depends on the command name.  Some command names do not
        !           289: allow arguments.
        !           290: 
        !           291: GDB command names may always be abbreviated if the abbreviation is
        !           292: unambiguous.  Sometimes even ambiguous abbreviations are allowed; for
        !           293: example, @samp{s} is specially defined as equivalent to @samp{step}
        !           294: even though there are other commands whose names start with @samp{s}.
        !           295: Possible command abbreviations are often stated in the documentation
        !           296: of the individual commands.
        !           297: 
        !           298: A blank line as input to GDB means to repeat the previous command verbatim.
        !           299: Certain commands do not allow themselves to be repeated this way; these are
        !           300: commands for which unintentional repetition might cause trouble and which
        !           301: you are unlikely to want to repeat.  Certain others (@samp{list} and
        !           302: @samp{x}) act differently when repeated because that is more useful.
        !           303: 
        !           304: A line of input starting with @samp{#} is a comment; it does nothing.
        !           305: This is useful mainly in command files (@xref{Command Files}).
        !           306: 
        !           307: GDB @dfn{prompts} for commands with a string that is normally @samp{(gdb)}.
        !           308: When debugging GDB with GDB, it is useful to change the prompt in one of
        !           309: the GDBs so that you can distinguish them.  This can be done with the
        !           310: @samp{set-prompt} command.
        !           311: 
        !           312: @table @code
        !           313: @item set-prompt @var{newprompt}
        !           314: @kindex set-prompt
        !           315: Directs GDB to use @var{newprompt} as its prompt string henceforth.
        !           316: @end table
        !           317: 
        !           318: @cindex exiting GDB
        !           319: @kindex quit
        !           320: To exit GDB, use the @samp{quit} command (abbreviated @samp{q}).
        !           321: @kbd{Ctrl-c} will not exit from GDB, but rather will terminate the action
        !           322: of any GDB command that is in progress and return to GDB command level.
        !           323: It is safe to type @kbd{Ctrl-c} at any time because GDB does not allow
        !           324: it to take effect until a time when it is safe.
        !           325: 
        !           326: @node Files, Options, Input, Top
        !           327: @chapter Specifying GDB's Files
        !           328: 
        !           329: @cindex core dump file
        !           330: @cindex executable file
        !           331: @cindex symbol table
        !           332: GDB needs to know the filename of the program to be debugged.  To debug a
        !           333: core dump of a previous run, GDB must be told the filename of the core
        !           334: dump.
        !           335: 
        !           336: @menu
        !           337: * Arguments: File Arguments.   Specifying files with arguments
        !           338:                                 (when you start GDB).
        !           339: * Commands: File Commands.     Specifying files with GDB commands.
        !           340: @end menu
        !           341: 
        !           342: @node File Arguments, File Commands, Files, Files
        !           343: @section Specifying Files with Arguments
        !           344: 
        !           345: The usual way to specify the executable and core dump file names is with
        !           346: two command arguments given when you start GDB.  The first argument is used
        !           347: as the file for execution and symbols, and the second argument (if any) is
        !           348: used as the core dump file name.  Thus,
        !           349: 
        !           350: @example
        !           351: gdb progm core
        !           352: @end example
        !           353: 
        !           354: @noindent
        !           355: specifies @file{progm} as the executable program and @file{core} as a core
        !           356: dump file to examine.  (You do not need to have a core dump file if what
        !           357: you plan to do is debug the program interactively.)
        !           358: 
        !           359: @xref{Options}, for full information on command options and arguments for
        !           360: GDB.
        !           361: 
        !           362: @node File Commands,, File Arguments, Files
        !           363: @section Specifying Files with Commands
        !           364: 
        !           365: Usually you specify the files for GDB to work with by giving arguments when
        !           366: you invoke GDB.  But occasionally it is necessary to change to a different
        !           367: file during a GDB session.  Or you may run GDB and forget to specify the
        !           368: files you want to use.  In these situations the GDB commands to specify new
        !           369: files are useful.
        !           370: 
        !           371: @table @code
        !           372: @item exec-file @var{filename}
        !           373: @kindex exec-file
        !           374: Specify that the program to be run is found in @var{filename}.  If you
        !           375: do not specify a directory and the file is not found in GDB's working
        !           376: directory, GDB will use the environment variable @samp{PATH} as a list
        !           377: of directories to search, just as the shell does when looking for a
        !           378: program to run.
        !           379: 
        !           380: @item symbol-file @var{filename}
        !           381: @kindex symbol-file
        !           382: Read symbol table information from file @var{filename}.  @samp{PATH}
        !           383: is searched when necessary.  Most of the time you will use both the
        !           384: @samp{exec-file} and @samp{symbol-file} commands on the same file.
        !           385: 
        !           386: @samp{symbol-file} with no argument clears out GDB's symbol table.
        !           387: 
        !           388: @item core-file @var{filename}
        !           389: @kindex core-file
        !           390: Specify the whereabouts of a core dump file to be used as the
        !           391: ``contents of memory''.  Note that the core dump contains only the
        !           392: writable parts of memory; the read-only parts must come from the
        !           393: executable file.
        !           394: 
        !           395: @samp{core-file} with no argument specifies that no core file is
        !           396: to be used.
        !           397: 
        !           398: @item kill
        !           399: @kindex kill
        !           400: Cancel running the program under GDB.  This could be used if you wish
        !           401: to debug a core dump instead.  GDB ignores any core dump file if it is
        !           402: actually running the program, so the @samp{kill} command is the only
        !           403: sure way to go back to using the core dump file.
        !           404: 
        !           405: @item info files
        !           406: @kindex info files
        !           407: Print the names of the executable and core dump files currently in
        !           408: use by GDB, and the file from which symbols were loaded.
        !           409: @end table
        !           410: 
        !           411: While all three file-specifying commands allow both absolute and relative
        !           412: file names as arguments, GDB always converts the file name to an absolute
        !           413: one and remembers it that way.
        !           414: 
        !           415: The @samp{symbol-file} command causes GDB to forget the contents of its
        !           416: convenience variables, the value history, and all breakpoints and
        !           417: auto-display expressions.  This is because they may contain pointers to the
        !           418: internal data recording symbols and data types, which are part of the old
        !           419: symbol table data being discarded inside GDB.
        !           420: 
        !           421: @node Options, Compilation, Files, Top
        !           422: @chapter Options and Arguments for GDB
        !           423: 
        !           424: When you invoke GDB, you can pass commands telling it what files to
        !           425: operate on and what other things to do.
        !           426: 
        !           427: @menu
        !           428: * Mode Options::     Options controlling modes of operation.
        !           429: * File Options::     Options to specify files (executable, coredump, commands)
        !           430: * Other Arguments::  Any other arguments without options
        !           431:                        also specify files.
        !           432: @end menu
        !           433: 
        !           434: @node Mode Options, File Options, Options, Options
        !           435: @section Mode Options
        !           436: 
        !           437: @table @samp
        !           438: @item -nx
        !           439: Do not execute commands from the init files @file{.gdbinit}.
        !           440: Normally, the commands in these files are executed after all the
        !           441: command options and arguments have been processed.  @xref{Command
        !           442: Files}.
        !           443: 
        !           444: @item -q
        !           445: ``Quiet''.  Do not print the usual introductory messages.
        !           446: 
        !           447: @item -batch
        !           448: Run in batch mode.  Exit with code 1 after processing all the command
        !           449: files specified with @samp{-x} (and @file{.gdbinit}, if not
        !           450: inhibited).  Exit also if, due to an error, GDB would otherwise
        !           451: attempt to read a command from the terminal.
        !           452: 
        !           453: @item -fullname
        !           454: This option is used when Emacs runs GDB as a subprocess.  It tells GDB
        !           455: to output the full file name and line number in a standard,
        !           456: recognizable fashion each time a stack frame is displayed (which
        !           457: includes each time the program stops).  This recognizable format looks
        !           458: like two @samp{\032} characters, followed by the filename, line number
        !           459: and character position separated by colons, and a newline.  The
        !           460: Emacs-to-GDB interface program uses the two @samp{\032} characters as
        !           461: a signal to display the source code for the frame.
        !           462: @end table
        !           463: 
        !           464: @node File Options, Other Arguments, Mode Options, Options
        !           465: @section File-specifying Options
        !           466: 
        !           467: All the options and command line arguments given are processed
        !           468: in sequential order.  The order makes a difference when the
        !           469: @samp{-x} command is used.
        !           470: 
        !           471: @table @samp
        !           472: @item -s @var{file}
        !           473: Read symbol table from file @var{file}.
        !           474: 
        !           475: @item -e @var{file}
        !           476: Use file @var{file} as the executable file to execute when
        !           477: appropriate, and for examining pure data in conjunction with a core
        !           478: dump.
        !           479: 
        !           480: @item -se @var{file}
        !           481: Read symbol table from file @var{file} and use it as the executable
        !           482: file.
        !           483: 
        !           484: @item -c @var{file}
        !           485: Use file @var{file} as a core dump to examine.
        !           486: 
        !           487: @item -x @var{file}
        !           488: Execute GDB commands from file @var{file}.
        !           489: 
        !           490: @item -d @var{directory}
        !           491: Add @var{directory} to the path to search for source files.
        !           492: @end table
        !           493: 
        !           494: @node Other Arguments,, File Options, Options
        !           495: @section Other Arguments
        !           496: 
        !           497: If there are arguments to GDB that are not options or associated with
        !           498: options, the first one specifies the symbol table and executable file name
        !           499: (as if it were preceded by @samp{-se}) and the second one specifies a core
        !           500: dump file name (as if it were preceded by @samp{-c}).
        !           501: 
        !           502: @node Compilation, Running, Options, Top
        !           503: @chapter Compiling Your Program for Debugging
        !           504: 
        !           505: In order to debug a program effectively, you need to ask for debugging
        !           506: information when you compile it.  This information in the object file
        !           507: describes the data type of each variable or function and the correspondence
        !           508: between source line numbers and addresses in the executable code.
        !           509: 
        !           510: To request debugging information, specify the @samp{-g} option when you run
        !           511: the compiler.
        !           512: 
        !           513: The Unix C compiler is unable to handle the @samp{-g} and @samp{-O} options
        !           514: together.  This means that you cannot ask for optimization if you ask for
        !           515: debugger information.
        !           516: 
        !           517: The GNU C compiler supports @samp{-g} with or without @samp{-O}, making it
        !           518: possible to debug optimized code.  We recommend that you @emph{always} use
        !           519: @samp{-g} whenever you compile a program.  You may think the program is
        !           520: correct, but there's no sense in pushing your luck.
        !           521: 
        !           522: If you are using the GNU C compiler, the GNU assembler and the GNU linker,
        !           523: you can choose between two formats of debugging information: the standard
        !           524: Unix format, which is what you get with @samp{-g}, and GDB's own format,
        !           525: which you request by using @samp{-gg} instead of @samp{-g}.  This stores
        !           526: debugging information in the executable file in a format much like that
        !           527: which is used inside GDB.  This has these advantages and disadvantages:
        !           528: 
        !           529: @itemize @bullet
        !           530: @item
        !           531: GDB can read @samp{-gg} format more than twice as fast as Unix
        !           532: @samp{-g} format.
        !           533: 
        !           534: @item
        !           535: The @samp{-gg} format uses much more disk space than Unix format.
        !           536: 
        !           537: @item
        !           538: The Unix debuggers can understand only Unix format, so you cannot use
        !           539: Unix source-level debuggers if you compile with @samp{-gg}.  (The
        !           540: @code{adb} debugger works with either format; it does not use this
        !           541: information in any case.)
        !           542: @end itemize
        !           543: 
        !           544: @node Running, Stopping, Compilation, Top
        !           545: @chapter Running Your Program Under GDB
        !           546: 
        !           547: @cindex running
        !           548: @kindex run
        !           549: To start your program under GDB, use the @samp{run} command.  The program
        !           550: must already have been specified using the @samp{exec-file} command or with
        !           551: an argument to GDB (@pxref{Files}); what @samp{run} does is create an
        !           552: inferior process, load the program into it, and set it in motion.
        !           553: 
        !           554: The execution of a program is affected by certain information it receives
        !           555: from its superior.  GDB provides ways to specify them, which you must do
        !           556: @i{before} starting the program.  (You can change them after starting the
        !           557: program, but such changes do not affect the program unless you start it
        !           558: over again.)
        !           559: 
        !           560: @table @asis
        !           561: @item The @i{arguments.}
        !           562: You specify the arguments to give the program as the arguments of the
        !           563: @samp{run} command.
        !           564: 
        !           565: @item The @i{environment.}
        !           566: The program normally inherits its environment from GDB, but you can
        !           567: use the GDB commands @samp{set-environment} and
        !           568: @samp{unset-environment} to change parts of the environment that will
        !           569: be given to the program.@refill
        !           570: 
        !           571: @item The @i{working directory.}
        !           572: The program inherits its working directory from GDB.  You can set GDB's
        !           573: working directory with the @samp{cd} command in GDB.
        !           574: @end table
        !           575: 
        !           576: After the @samp{run} command, the debugger does nothing but wait for your
        !           577: program to stop.  @xref{Stopping}.
        !           578: 
        !           579: @menu
        !           580: * Arguments::          Specifying the arguments for your program.
        !           581: * Environment::        Specifying the environment for your program.
        !           582: * Working Directory::  Specifying the working directory for giving
        !           583:                        to your program when it is run.
        !           584: * Input/Output::       Specifying the program's standard input and output.
        !           585: * Attach::             Debugging a process started outside GDB.
        !           586: @end menu
        !           587: 
        !           588: @node Arguments, Environment, Running, Running
        !           589: @section Your Program's Arguments
        !           590: 
        !           591: @cindex arguments (to your program)
        !           592: You specify the arguments to give the program as the arguments of the
        !           593: @samp{run} command.  They are passed to a shell, which expands wildcard
        !           594: characters and performs redirection of I/O, and thence to the program.
        !           595: 
        !           596: @samp{run} with no arguments uses the same arguments used by the previous
        !           597: @samp{run}.
        !           598: 
        !           599: @kindex set-args
        !           600: The command @samp{set-args} can be used to specify the arguments to be used
        !           601: the next time the program is run.  If @samp{set-args} has no arguments, it
        !           602: means to use no arguments the next time the program is run.  If you have
        !           603: run your program with arguments and want to run it again with no arguments,
        !           604: this is the only way to do so.
        !           605: 
        !           606: @node Environment, Working Directory, Arguments, Running
        !           607: @section Your Program's Environment
        !           608: 
        !           609: @cindex environment (of your program)
        !           610: The @dfn{environment} consists of a set of @dfn{environment variables} and
        !           611: their values.  Environment variables conventionally record such things as
        !           612: your user name, your home directory, your terminal type, and your search
        !           613: path for programs to run.  Usually you set up environment variables with
        !           614: the shell and they are inherited by all the other programs you run.  When
        !           615: debugging, it can be useful to try running the program with different
        !           616: environments without having to start the debugger over again.
        !           617: 
        !           618: @table @code
        !           619: @item info environment @var{varname}
        !           620: @kindex info environment
        !           621: Print the value of environment variable @var{varname} to be given to
        !           622: your program when it is started.  This command can be abbreviated
        !           623: @samp{i env @var{varname}}.
        !           624: 
        !           625: @item info environment
        !           626: Print the names and values of all environment variables to be given to
        !           627: your program when it is started.  This command can be abbreviated
        !           628: @samp{i env}.
        !           629: 
        !           630: @item set-environment @var{varname} @var{value}
        !           631: @kindex set-environment
        !           632: Sets environment variable @var{varname} to @var{value}, for your
        !           633: program only, not for GDB itself.  @var{value} may be any string; the
        !           634: values of environment variables are just strings, and any
        !           635: interpretation is supplied by your program itself.  This command
        !           636: can be abbreviated as short as @samp{set-e}.
        !           637: 
        !           638: @item unset-environment @var{varname}
        !           639: @kindex unset-environment
        !           640: Remove variable @var{varname} from the environment to be passed to
        !           641: your program.  This is different from @samp{set-env @var{varname} =}
        !           642: because @samp{unset-environment} makes a variable not be defined at
        !           643: all, which is distinguishable from an empty value.  This command can
        !           644: be abbreviated @samp{unset}.
        !           645: @end table
        !           646: 
        !           647: @node Working Directory, Input/Output, Environment, Running
        !           648: @section Your Program's Working Directory
        !           649: 
        !           650: @cindex working directory (of your program)
        !           651: Each time you start your program with @samp{run}, it inherits its working
        !           652: directory from the current working directory of GDB.  GDB's working
        !           653: directory is initially whatever it inherited from its superior, but you can
        !           654: specify the working directory for GDB with the @samp{cd} command.
        !           655: 
        !           656: The GDB working directory also serves as a default for the commands
        !           657: that specify files for GDB to operate on.  @xref{Files}.
        !           658: 
        !           659: @table @code
        !           660: @item cd @var{directory}
        !           661: @kindex cd
        !           662: Set GDB's working directory to @var{directory}.
        !           663: 
        !           664: @item pwd
        !           665: @kindex pwd
        !           666: Print GDB's working directory.
        !           667: @end table
        !           668: 
        !           669: @node Input/Output, Attach, Working Directory, Running
        !           670: @section Your Program's Input and Output
        !           671: 
        !           672: @cindex redirection
        !           673: By default, the program you run under GDB does input and output to the same
        !           674: terminal that GDB uses.
        !           675: 
        !           676: You can redirect the program's input and/or output using @samp{sh}-style
        !           677: redirection commands in the @samp{run} command.  For example,
        !           678: 
        !           679: @example
        !           680: run > outfile
        !           681: @end example
        !           682: 
        !           683: @noindent
        !           684: starts the program, diverting its output to the file @file{outfile}.
        !           685: 
        !           686: @kindex tty
        !           687: Another way to specify where the program should do input and output is with
        !           688: the @samp{tty} command.  This command accepts a file name as argument, and
        !           689: causes this file to be the default for future @samp{run} commands.  For
        !           690: example,
        !           691: 
        !           692: @example
        !           693: tty /dev/ttyb
        !           694: @end example
        !           695: 
        !           696: @noindent
        !           697: directs that processes started with subsequent @samp{run} commands default
        !           698: to do input and output on the terminal @file{/dev/ttyb}.  An explicit
        !           699: redirection in @samp{run} overrides the @samp{tty} command.
        !           700: 
        !           701: When you use the @samp{tty} command or redirect input in the @samp{run}
        !           702: command, the @emph{input for your program} comes from the specified file,
        !           703: but the input for GDB still comes from your terminal.  The program's
        !           704: controlling terminal is your (GDB's) terminal, not the terminal that the
        !           705: program is reading from; so if you want to type @kbd{C-c} to stop the
        !           706: program, you must type it on your (GDB's) terminal.  A @kbd{C-c} typed on
        !           707: the program's terminal is available to the program as ordinary input.
        !           708: 
        !           709: @node Attach,, Input/Output, Running
        !           710: @section Debugging an Already-Running Process
        !           711: @kindex detach
        !           712: @kindex attach
        !           713: @cindex attach
        !           714: 
        !           715: Some operating systems (in particular, Sun) allow GDB to begin debugging an
        !           716: already-running process that was started outside of GDB.  To do this you
        !           717: must use the @samp{attach} command instead of the @samp{run} command.
        !           718: 
        !           719: The @samp{attach} command requires one argument, which is the process-id of
        !           720: the process you want to debug.  (The usual way to find out the process-id
        !           721: of the process is with the @samp{ps} utility.)
        !           722: 
        !           723: The first thing GDB after arranging to debug the process is to stop it.
        !           724: You can examine and modify an attached process with all the GDB commands
        !           725: that ordinarily available when you start processes with @samp{run}.  You
        !           726: can insert breakpoints; you can step and continue; you can modify storage.
        !           727: If you would rather the process continue running, use the @samp{continue}
        !           728: command after attaching.
        !           729: 
        !           730: When you are finished debugging the attached process, you can use the
        !           731: @samp{detach} command to release it from GDB's control.  Detaching
        !           732: the process continues its execution.  After the @samp{detach} command,
        !           733: that process and GDB become completely independent once more, and you
        !           734: are ready to @samp{attach} another process or start one with @samp{run}.
        !           735: 
        !           736: If you exit GDB or use the @samp{run} command while you have an attached
        !           737: process, you kill that process.  You will be asked for confirmation if you
        !           738: try to do either of these things.
        !           739: 
        !           740: @node Stopping, Stack, Running, Top
        !           741: @chapter Stopping and Continuing
        !           742: 
        !           743: When you run a program normally, it runs until exiting.  The purpose
        !           744: of using a debugger is so that you can stop it before that point;
        !           745: or so that if the program runs into trouble you can find out why.
        !           746: 
        !           747: @menu
        !           748: * Signals::      Fatal signals in your program just stop it;
        !           749:                  then you can use GDB to see what is going on.
        !           750: * Breakpoints::  Breakpoints let you stop your program when it
        !           751:                  reaches a specified point in the code.
        !           752: * Continuing::   Resuming execution until the next signal or breakpoint.
        !           753: * Stepping::     Stepping runs the program a short distance and
        !           754:                  then stops it wherever it has come to.
        !           755: @end menu
        !           756: 
        !           757: @node Signals, Breakpoints, Stopping, Stopping
        !           758: @section Signals
        !           759: 
        !           760: A signal is an asynchronous event that can happen in a program.  The
        !           761: operating system defines the possible kinds of signals, and gives each kind
        !           762: a name and a number.  For example, @code{SIGINT} is the signal a program
        !           763: gets when you type @kbd{Ctrl-c}; @code{SIGSEGV} is the signal a program
        !           764: gets from referencing a place in memory far away from all the areas in use;
        !           765: @code{SIGALRM} occurs when the alarm clock timer goes off (which happens
        !           766: only if the program has requested an alarm).
        !           767: 
        !           768: Some signals, including @code{SIGALRM}, are a normal part of the
        !           769: functioning of the program.  Others, such as @code{SIGSEGV}, indicate
        !           770: errors; these signals are @dfn{fatal} (kill the program immediately) if the
        !           771: program has not specified in advance some other way to handle the signal.
        !           772: @code{SIGINT} does not indicate an error in the program, but it is normally
        !           773: fatal so it can carry out the purpose of @kbd{Ctrl-c}: to kill the program.
        !           774: 
        !           775: GDB has the ability to detect any occurrence of a signal in the program
        !           776: running under GDB's control.  You can tell GDB in advance what to do for
        !           777: each kind of signal.
        !           778: 
        !           779: Normally, GDB is set up to ignore non-erroneous signals like @code{SIGALRM}
        !           780: (so as not to interfere with their role in the functioning of the program)
        !           781: but to stop the program immediately whenever an error signal happens.
        !           782: You can change these settings with the @samp{handle} command.  You must
        !           783: specify which signal you are talking about with its number.
        !           784: 
        !           785: @table @code
        !           786: @item info signal
        !           787: @kindex info signal
        !           788: Print a table of all the kinds of signals and how GDB has been told to
        !           789: handle each one.  You can use this to see the signal numbers of all
        !           790: the defined types of signals.
        !           791: 
        !           792: @item handle @var{signalnum} @var{keywords}@dots{}
        !           793: @kindex handle
        !           794: Change the way GDB handles signal @var{signalnum}.  The @var{keywords}
        !           795: say what change to make.
        !           796: @end table
        !           797: 
        !           798: To use the @samp{handle} command you must know the code number of the
        !           799: signal you are concerned with.  To find the code number, type @samp{info
        !           800: signal} which prints a table of signal names and numbers.
        !           801: 
        !           802: The keywords allowed by the handle command can be abbreviated.  Their full
        !           803: names are
        !           804: 
        !           805: @table @code
        !           806: @item stop
        !           807: GDB should stop the program when this signal happens.  This implies
        !           808: the @samp{print} keyword as well.
        !           809: 
        !           810: @item print
        !           811: GDB should print a message when this signal happens.
        !           812: 
        !           813: @item nostop
        !           814: GDB should not stop the program when this signal happens.  It may
        !           815: still print a message telling you that the signal has come in.
        !           816: 
        !           817: @item noprint
        !           818: GDB should not mention the occurrence of the signal at all.  This
        !           819: implies the @samp{nostop} keyword as well.
        !           820: 
        !           821: @item pass
        !           822: GDB should allow the program to see this signal; the program will be
        !           823: able to handle the signal, or may be terminated if the signal is fatal
        !           824: and not handled.
        !           825: 
        !           826: @item nopass
        !           827: GDB should not allow the program to see this signal.
        !           828: @end table
        !           829: 
        !           830: When a signal has been set to stop the program, the program cannot see the
        !           831: signal until you continue.  It will see the signal then, if @samp{pass} is
        !           832: in effect for the signal in question @i{at that time}.  In other words,
        !           833: after GDB reports a signal, you can use the @samp{handle} command with
        !           834: @samp{pass} or @samp{nopass} to control whether that signal will be seen by
        !           835: the program when you later continue it.
        !           836: 
        !           837: You can also use the @samp{signal} command to prevent the program from
        !           838: seeing a signal, or cause it to see a signal it normally would not see,
        !           839: or to give it any signal at any time.  @xref{Signaling}.
        !           840: 
        !           841: @node Breakpoints, Continuing, Signals, Stopping
        !           842: @section Breakpoints
        !           843: 
        !           844: @cindex breakpoints
        !           845: A @dfn{breakpoint} makes your program stop whenever a certain point in the
        !           846: program is reached.  You set breakpoints explicitly with GDB commands,
        !           847: specifying the place where the program should stop by line number, function
        !           848: name or exact address in the program.  You can add various other conditions
        !           849: to control whether the program will stop.
        !           850: 
        !           851: Each breakpoint is assigned a number when it is created; these numbers are
        !           852: successive integers starting with 1.  In many of the commands for controlling
        !           853: various features of breakpoints you use the breakpoint number to say which
        !           854: breakpoint you want to change.  Each breakpoint may be @dfn{enabled} or
        !           855: @dfn{disabled}; if disabled, it has no effect on the program until you
        !           856: enable it again.
        !           857: 
        !           858: @kindex info break
        !           859: @kindex $_
        !           860: The command @samp{info break} prints a list of all breakpoints set and not
        !           861: cleared, showing their numbers, where in the program they are, and any
        !           862: special features in use for them.  Disabled breakpoints are included in the
        !           863: list, but marked as disabled.  @samp{info break} with a breakpoint number
        !           864: as argument lists only that breakpoint.  The convenience variable @samp{$_}
        !           865: and the default examining-address for the @samp{x} command are set to the
        !           866: address of the last breakpoint listed (@pxref{Memory}).
        !           867: 
        !           868: @menu
        !           869: * Set Breaks::     How to establish breakpoints.
        !           870: * Clear Breaks::   How to remove breakpoints no longer needed.
        !           871: * Disabling::      How to disable breakpoints (turn them off temporarily).
        !           872: * Conditions::     Making extra conditions on whether to stop.
        !           873: * Break Commands:: Commands to be executed at a breakpoint.
        !           874: * Error in Breakpoints:: "Cannot insert breakpoints" error--why, what to do.
        !           875: @end menu
        !           876: 
        !           877: @node Set Breaks, Clear Breaks, Breakpoints, Breakpoints
        !           878: @subsection Setting Breakpoints
        !           879: 
        !           880: @kindex break
        !           881: Breakpoints are set with the @samp{break} command (abbreviated @samp{b}).
        !           882: You have several ways to say where the breakpoint should go.
        !           883: 
        !           884: @table @code
        !           885: @item break @var{function}
        !           886: Set a breakpoint at entry to function @var{function}.
        !           887: 
        !           888: @item break @var{linenum}
        !           889: Set a breakpoint at line @var{linenum} in the current source file.
        !           890: That file is the last file whose source text was printed.  This
        !           891: breakpoint will stop the program just before it executes any of the
        !           892: code on that line.
        !           893: 
        !           894: @item break @var{filename}:@var{linenum}
        !           895: Set a breakpoint at line @var{linenum} in source file @var{filename}.
        !           896: 
        !           897: @item break @var{filename}:@var{function}
        !           898: Set a breakpoint at entry to function @var{function} found in file
        !           899: @var{filename}.  Specifying a filename as well as a function name is
        !           900: superfluous except when multiple files contain similarly named
        !           901: functions.
        !           902: 
        !           903: @item break *@var{address}
        !           904: Set a breakpoint at address @var{address}.  You can use this to set
        !           905: breakpoints in parts of the program which do not have debugging
        !           906: information or source files.
        !           907: 
        !           908: @item break
        !           909: Set a breakpoint at the next instruction to be executed in the
        !           910: selected stack frame (@pxref{Stack}).  This is a silly thing to do in
        !           911: the innermost stack frame because the program would stop immediately
        !           912: after being started, but it is very useful with another stack frame,
        !           913: because it will cause the program to stop as soon as control returns
        !           914: to that frame.
        !           915: 
        !           916: @item break @dots{} if @var{cond}
        !           917: Set a breakpoint with condition @var{cond}; evaluate the expression
        !           918: @var{cond} each time the breakpoint is reached, and stop only if the
        !           919: value is nonzero.  @samp{@dots{}} stands for one of the possible
        !           920: arguments described above (or no argument) specifying where to break.
        !           921: @xref{Conditions}, for more information on breakpoint conditions.
        !           922: 
        !           923: @item tbreak @var{args}
        !           924: @kindex tbreak
        !           925: Set a breakpoint enabled only for one stop.  @var{args} are the
        !           926: same as in the @samp{break} command, and the breakpoint is set in the same
        !           927: way, but the breakpoint is automatically @dfn{disabled} the first time it
        !           928: is hit.
        !           929: @end table
        !           930: 
        !           931: GDB allows you to set any number of breakpoints at the same place in the
        !           932: program.  There is nothing silly or meaningless about this.  When the
        !           933: breakpoints are conditional, this is even useful (@pxref{Conditions}).
        !           934: 
        !           935: @node Clear Breaks, Disabling, Set Breaks, Breakpoints
        !           936: @subsection Clearing Breakpoints
        !           937: 
        !           938: @cindex clear breakpoint
        !           939: @cindex delete breakpoints
        !           940: It is often necessary to eliminate a breakpoint once it has done its job
        !           941: and you no longer want the program to stop there.  This is called
        !           942: @dfn{clearing} or @samp{deleting} the breakpoint.  A breakpoint that
        !           943: has been cleared no longer exists in any sense.
        !           944: 
        !           945: With the @samp{clear} command you can clear breakpoints according to where
        !           946: they are in the program.  With the @samp{delete} command you can clear
        !           947: individual breakpoints by specifying their breakpoint numbers.
        !           948: 
        !           949: @b{It is not necessary to clear a breakpoint to proceed past it.}  GDB
        !           950: automatically ignores breakpoints in the first instruction to be executed
        !           951: when you continue execution at the same address where the program stopped.
        !           952: 
        !           953: @table @code
        !           954: @item clear
        !           955: @kindex clear
        !           956: Clear any breakpoints at the next instruction to be executed in the
        !           957: selected stack frame (@pxref{Selection}).  When the innermost frame
        !           958: is selected, this is a good way to clear a breakpoint that the program
        !           959: just stopped at.
        !           960: 
        !           961: @item clear @var{function}
        !           962: @itemx clear @var{filename}:@var{function}
        !           963: Clear any breakpoints set at entry to the function @var{function}.
        !           964: 
        !           965: @item clear @var{linenum}
        !           966: @item clear @var{filename}:@var{linenum}
        !           967: Clear any breakpoints set at or within the code of the specified line.
        !           968: 
        !           969: @item delete @var{bnums}@dots{}
        !           970: @kindex delete
        !           971: Delete the breakpoints of the numbers specified as arguments.
        !           972: A breakpoint deleted is forgotten completely.
        !           973: @end table
        !           974: 
        !           975: @node Disabling, Conditions, Clear Breaks, Breakpoints
        !           976: @subsection Disabling Breakpoints
        !           977: 
        !           978: @cindex disabled breakpoints
        !           979: @cindex enabled breakpoints
        !           980: Rather than clearing a breakpoint, you might prefer to @dfn{disable} it.
        !           981: This makes the breakpoint inoperative as if it had been cleared, but
        !           982: remembers the information on the breakpoint so that you can @dfn{enable}
        !           983: it again later.
        !           984: 
        !           985: You disable and enable breakpoints with the @samp{enable} and
        !           986: @samp{disable} commands, specifying one or more breakpoint numbers as
        !           987: arguments.  Use @samp{info break} to print a list of breakpoints if you
        !           988: don't know which breakpoint numbers to use.
        !           989: 
        !           990: A breakpoint can have any of four different states of enablement:
        !           991: 
        !           992: @itemize @bullet
        !           993: @item
        !           994: Enabled.  The breakpoint will stop the program.  A breakpoint made
        !           995: with the @samp{break} command starts out in this state.
        !           996: @item
        !           997: Disabled.  The breakpoint has no effect on the program.
        !           998: @item
        !           999: Enabled once.  The breakpoint will stop the program, but
        !          1000: when it does so it will become disabled.  A breakpoint made
        !          1001: with the @samp{tbreak} command starts out in this state.
        !          1002: @item
        !          1003: Enabled for deletion.  The breakpoint will stop the program, but
        !          1004: immediately after it does so it will be deleted permanently.
        !          1005: @end itemize
        !          1006: 
        !          1007: You change the state of enablement of a breakpoint with the following
        !          1008: commands:
        !          1009: 
        !          1010: @table @code
        !          1011: @item disable @var{bnums}@dots{}
        !          1012: @kindex disable
        !          1013: Disable the specified breakpoints.  A disabled breakpoint has no
        !          1014: effect but is not forgotten.  All options such as ignore-counts,
        !          1015: conditions and commands are remembered in case the breakpoint is
        !          1016: enabled again later.
        !          1017: 
        !          1018: @item enable @var{bnums}@dots{}
        !          1019: @kindex enable
        !          1020: Enable the specified breakpoints.  They become effective once again in
        !          1021: stopping the program, until you specify otherwise.
        !          1022: 
        !          1023: @item enable once @var{bnums}@dots{}
        !          1024: Enable the specified breakpoints temporarily.  Each will be disabled
        !          1025: again the next time it stops the program (unless you have used one of
        !          1026: these commands to specify a different state before that time comes).
        !          1027: 
        !          1028: @item enable delete @var{bnums}@dots{}
        !          1029: Enable the specified breakpoints to work once and then die.  Each of
        !          1030: the breakpoints will be deleted the next time it stops the program
        !          1031: (unless you have used one of these commands to specify a different
        !          1032: state before that time comes).
        !          1033: @end table
        !          1034: 
        !          1035: Aside from the automatic disablement or deletion of a breakpoint when it
        !          1036: stops the program, which happens only in certain states, the state of
        !          1037: enablement of a breakpoint changes only when one of the commands above
        !          1038: is used.
        !          1039: 
        !          1040: @node Conditions, Break Commands, Disabling, Breakpoints
        !          1041: @subsection Break Conditions
        !          1042: 
        !          1043: @cindex conditions
        !          1044: The simplest sort of breakpoint breaks every time the program reaches a
        !          1045: specified place.  You can also specify a @dfn{condition} for a breakpoint.
        !          1046: A condition is just a boolean expression in your programming language.
        !          1047: A breakpoint with a condition evaluates the expression each time the
        !          1048: program reaches it, and the program stops only if the condition is true.
        !          1049: 
        !          1050: Break conditions may have side effects, and may even call functions in your
        !          1051: program.  These may sound like strange things to do, but their effects are
        !          1052: completely predictable unless there is another enabled breakpoint at the
        !          1053: same address.  (In that case, GDB might see the other breakpoint first and
        !          1054: stop the program without checking the condition of this one.)  Note that
        !          1055: breakpoint commands are usually more convenient and flexible for the
        !          1056: purpose of performing side effects when a breakpoint is reached
        !          1057: (@pxref{Break Commands}).
        !          1058: 
        !          1059: Break conditions can be specified when a breakpoint is set, by using
        !          1060: @samp{if} in the arguments to the @samp{break} command.  @xref{Set Breaks}.
        !          1061: They can also be changed at any time with the @samp{condition} command:
        !          1062: 
        !          1063: @table @code
        !          1064: @item condition @var{bnum} @var{expression}
        !          1065: @kindex condition
        !          1066: Specify @var{expression} as the break condition for breakpoint number
        !          1067: @var{bnum}.  From now on, this breakpoint will stop the program only if
        !          1068: the value of @var{expression} is true (nonzero, in C).  @var{expression}
        !          1069: is not evaluated at the time the @samp{condition} command is given.
        !          1070: 
        !          1071: @item condition @var{bnum}
        !          1072: Remove the condition from breakpoint number @var{bnum}.  It becomes
        !          1073: an ordinary unconditional breakpoint.
        !          1074: @end table
        !          1075: 
        !          1076: @cindex ignore count (of breakpoint)
        !          1077: A special feature is provided for one kind of condition: to prevent the
        !          1078: breakpoint from doing anything until it has been reached a certain number
        !          1079: of times.  This is done with the @dfn{ignore count} of the breakpoint.
        !          1080: When the program reaches a breakpoint whose ignore count is positive, then
        !          1081: instead of stopping, it just decrements the ignore count by one and
        !          1082: continues.
        !          1083: 
        !          1084: @table @code
        !          1085: @item ignore @var{bnum} @var{count}
        !          1086: @kindex ignore
        !          1087: Set the ignore count of breakpoint number @var{bnum} to @var{count}.
        !          1088: The next @var{count} times the breakpoint is reached, it will not stop.
        !          1089: 
        !          1090: To make the breakpoint stop the next time it is reached, specify
        !          1091: a count of zero.
        !          1092: 
        !          1093: @item cont @var{count}
        !          1094: Continue execution of the program, setting the ignore count of the
        !          1095: breakpoint that the program stopped at to @var{count} minus one.
        !          1096: Continuing through the breakpoint does not itself count as one of
        !          1097: @var{count}.  Thus, the program will not stop at this breakpoint until the
        !          1098: @var{count}'th time it is hit.
        !          1099: 
        !          1100: This command is allowed only when the program stopped due to a
        !          1101: breakpoint.  At other times, the argument to @samp{cont} is ignored.
        !          1102: @end table
        !          1103: 
        !          1104: If a breakpoint has a positive ignore count and a condition, the condition
        !          1105: is not checked.  Once the ignore count reaches zero, the condition will
        !          1106: start to be checked.
        !          1107: 
        !          1108: Note that you could achieve the effect of the ignore count with a condition
        !          1109: such as @samp{$foo-- <= 0} using a debugger convenience variable that is
        !          1110: decremented each time.  That is why the ignore count is considered a
        !          1111: special case of a condition.  @xref{Convenience Vars}.
        !          1112: 
        !          1113: @node Break Commands, Error in Breakpoints, Conditions, Breakpoints
        !          1114: @subsection Commands Executed on Breaking
        !          1115: 
        !          1116: @cindex breakpoint commands
        !          1117: You can give any breakpoint a series of commands to execute when the
        !          1118: program stops due to that breakpoint.  For example, you might want to
        !          1119: print the values of certain expressions, or enable other breakpoints.
        !          1120: 
        !          1121: @table @code
        !          1122: @item commands @var{bnum}
        !          1123: Specify commands for breakpoint number @var{bnum}.  The commands
        !          1124: themselves appear on the following lines.  Type a line containing just
        !          1125: @samp{end} to terminate the commands.
        !          1126: 
        !          1127: To remove all commands from a breakpoint, use the command
        !          1128: @samp{commands} and follow it immediately by @samp{end}; that is, give
        !          1129: no commands.
        !          1130: @end table
        !          1131: 
        !          1132: It is possible for breakpoint commands to start the program up again.
        !          1133: Simply use the @samp{cont} command, or @samp{step}, or any other command
        !          1134: to resume execution.  However, any remaining breakpoint commands are
        !          1135: ignored.  When the program stops again, GDB will act according to why
        !          1136: that stop took place.
        !          1137: 
        !          1138: @kindex silent
        !          1139: If the first command specified is @samp{silent}, the usual message about
        !          1140: stopping at a breakpoint is not printed.  This may be desirable for
        !          1141: breakpoints that are to print a specific message and then continue.
        !          1142: If the remaining commands too print nothing, you will see no sign that
        !          1143: the breakpoint was reached at all.  @samp{silent} is not really a command;
        !          1144: it is meaningful only at the beginning of the commands for a breakpoint.
        !          1145: 
        !          1146: The commands @samp{echo} and @samp{output} that allow you to print precisely
        !          1147: controlled output are often useful in silent breakpoints.  @xref{Output}.
        !          1148: 
        !          1149: For example, here is how you could use breakpoint commands to print the
        !          1150: value of @code{x} at entry to @code{foo} whenever it is positive.  We
        !          1151: assume that the newly created breakpoint is number 4; @samp{break} will
        !          1152: print the number that is assigned.
        !          1153: 
        !          1154: @example
        !          1155: break foo if x>0
        !          1156: commands 4
        !          1157: silent
        !          1158: echo x is\040
        !          1159: output x
        !          1160: echo \n
        !          1161: cont
        !          1162: end
        !          1163: @end example
        !          1164: 
        !          1165: One application for breakpoint commands is to correct one bug so you can
        !          1166: test another.  Put a breakpoint just after the erroneous line of code, give
        !          1167: it a condition to detect the case in which something erroneous has been
        !          1168: done, and give it commands to assign correct values to any variables that
        !          1169: need them.  End with the @samp{cont} command so that the program does not
        !          1170: stop, and start with the @samp{silent} command so that no output is
        !          1171: produced.  Here is an example:
        !          1172: 
        !          1173: @example
        !          1174: break 403
        !          1175: commands 5
        !          1176: silent
        !          1177: set x = y + 4
        !          1178: cont
        !          1179: end
        !          1180: @end example
        !          1181: 
        !          1182: One deficiency in the operation of automatically continuing breakpoints
        !          1183: under Unix appears when your program uses raw mode for the terminal.
        !          1184: GDB switches back to its own terminal modes (not raw) before executing
        !          1185: commands, and then must switch back to raw mode when your program is
        !          1186: continued.  This causes any pending terminal input to be lost.
        !          1187: 
        !          1188: In the GNU system, this will be fixed by changing the behavior of
        !          1189: terminal modes.
        !          1190: 
        !          1191: Under Unix, when you have this problem, you might be able to get around
        !          1192: it by putting your actions into the breakpoint condition instead of
        !          1193: commands.  For example
        !          1194: 
        !          1195: @example
        !          1196: condition 5  (x = y + 4), 0
        !          1197: @end example
        !          1198: 
        !          1199: @noindent
        !          1200: is a condition expression that will change @code{x} as needed, then always
        !          1201: have the value 0 so the program will not stop.  Loss of input is avoided
        !          1202: here because break conditions are evaluated without changing the terminal
        !          1203: modes.  When you want to have nontrivial conditions for performing the side
        !          1204: effects, the operators @samp{&&}, @samp{||} and @samp{?@: @dots{} :@:} may be useful.
        !          1205: 
        !          1206: @node Error in Breakpoints,, Break Commands, Breakpoints
        !          1207: @subsection ``Cannot Insert Breakpoints'' Error
        !          1208: 
        !          1209: Under Unix, breakpoints cannot be used in a program if any other process
        !          1210: is running that program.  Attempting to run or continue the program with
        !          1211: a breakpoint in this case will cause GDB to stop it.
        !          1212: 
        !          1213: When this happens, you have two ways to proceed:
        !          1214: 
        !          1215: @enumerate
        !          1216: @item
        !          1217: Remove or disable the breakpoints, then continue.
        !          1218: 
        !          1219: @item
        !          1220: Suspend GDB, and copy the file containing the program to a new name.
        !          1221: Resume GDB and use the @samp{exec-file} command to specify that GDB
        !          1222: should run the program under that name.  Then start the program again.
        !          1223: @end enumerate
        !          1224: 
        !          1225: @node Continuing, Stepping, Breakpoints, Stopping
        !          1226: @section Continuing
        !          1227: 
        !          1228: After your program stops, most likely you will want it to run some more if
        !          1229: the bug you are looking for has not happened yet.
        !          1230: 
        !          1231: @table @code
        !          1232: @item cont
        !          1233: Continue running the program at the place where it stopped.
        !          1234: @end table
        !          1235: 
        !          1236: If the program stopped at a breakpoint, the place to continue running
        !          1237: is the address of the breakpoint.  You might expect that continuing would
        !          1238: just stop at the same breakpoint immediately.  In fact, @samp{cont}
        !          1239: takes special care to prevent that from happening.  You do not need
        !          1240: to clear the breakpoint to proceed through it after stopping at it.
        !          1241: 
        !          1242: You can, however, specify an ignore-count for the breakpoint that the
        !          1243: program stopped at, by means of an argument to the @samp{cont} command.
        !          1244: @xref{Conditions}.
        !          1245: 
        !          1246: If the program stopped because of a signal other than @code{SIGINT} or
        !          1247: @code{SIGTRAP}, continuing will cause the program to see that signal.
        !          1248: You may not want this to happen.  For example, if the program stopped
        !          1249: due to some sort of memory reference error, you might store correct
        !          1250: values into the erroneous variables and continue, hoping to see more
        !          1251: execution; but the program would probably terminate immediately as
        !          1252: a result of the fatal signal once it sees the signal.  To prevent this,
        !          1253: you can continue with @samp{signal 0}.  @xref{Signaling}.  You can
        !          1254: also act in advance to prevent the program from seeing certain kinds
        !          1255: of signals, using the @samp{handle} command (@pxref{Signals}).
        !          1256: 
        !          1257: @node Stepping,, Continuing, Stopping
        !          1258: @section Stepping
        !          1259: 
        !          1260: @cindex stepping
        !          1261: @dfn{Stepping} means setting your program in motion for a limited time, so
        !          1262: that control will return automatically to the debugger after one line of
        !          1263: code or one machine instruction.  Breakpoints are active during stepping
        !          1264: and the program will stop for them even if it has not gone as far as the
        !          1265: stepping command specifies.
        !          1266: 
        !          1267: @table @code
        !          1268: @item step
        !          1269: @kindex step
        !          1270: Proceed the program until control reaches a different line, then stop
        !          1271: it and return to the debugger.  This command is abbreviated @samp{s}.
        !          1272: 
        !          1273: @item step @var{count}
        !          1274: Proceed as in @samp{step}, but do so @var{count} times.  If a breakpoint
        !          1275: or a signal not related to stepping is reached before @var{count} steps,
        !          1276: stepping stops right away.
        !          1277: 
        !          1278: @item next
        !          1279: @kindex next
        !          1280: Similar to @samp{step}, but any function calls appearing within the line of
        !          1281: code are executed without stopping.  Execution stops when control reaches a
        !          1282: different line of code at the stack level which was executing when the
        !          1283: @samp{next} command was given.  This command is abbreviated @samp{n}.
        !          1284: 
        !          1285: An argument is a repeat count, as in @samp{step}.
        !          1286: 
        !          1287: @item finish
        !          1288: @kindex finish
        !          1289: Continue running until just after the selected stack frame returns
        !          1290: (or until there is some other reason to stop, such as a fatal signal
        !          1291: or a breakpoint).
        !          1292: 
        !          1293: Contrast this with the @samp{return} command (@pxref{Returning}).
        !          1294: 
        !          1295: @item stepi
        !          1296: @itemx si
        !          1297: @kindex stepi
        !          1298: @kindex si
        !          1299: Proceed one machine instruction, then stop and return to the debugger.
        !          1300: 
        !          1301: It is often useful to do @samp{display/i $pc} when stepping by machine
        !          1302: instructions.  This will cause the next instruction to be executed to
        !          1303: be displayed automatically at each stop.  @xref{Auto Display}.
        !          1304: 
        !          1305: An argument is a repeat count, as in @samp{step}.
        !          1306: 
        !          1307: @item nexti
        !          1308: @itemx ni
        !          1309: @kindex nexti
        !          1310: @kindex ni
        !          1311: Proceed one machine instruction, but if it is a subroutine call,
        !          1312: proceed until the subroutine returns.
        !          1313: 
        !          1314: An argument is a repeat count, as in @samp{next}.
        !          1315: @end table
        !          1316: 
        !          1317: A typical technique for using stepping is to put a breakpoint
        !          1318: (@pxref{Breakpoints}) at the beginning of the function or the section of
        !          1319: the program in which a problem is believed to lie, and then step through
        !          1320: the suspect area, examining the variables that are interesting, until the
        !          1321: problem happens.
        !          1322: 
        !          1323: The @samp{cont} command can be used after stepping to resume execution
        !          1324: until the next breakpoint or signal.
        !          1325: 
        !          1326: @node Stack, Source, Stopping, Top
        !          1327: @chapter Examining the Stack
        !          1328: 
        !          1329: When your program has stopped, the first thing you need to know is where it
        !          1330: stopped and how it got there.
        !          1331: 
        !          1332: @cindex call stack
        !          1333: Each time your program performs a function call, the information about
        !          1334: where in the program the call was made from is saved in a block of data
        !          1335: called a @dfn{stack frame}.  The frame also contains the arguments of the
        !          1336: call and the local variables of the function that was called.  All the
        !          1337: stack frames are allocated in a region of memory called the @dfn{call
        !          1338: stack}.
        !          1339: 
        !          1340: When your program stops, the GDB commands for examining the stack allow you
        !          1341: to see all of this information.
        !          1342: 
        !          1343: One of the stack frames is @dfn{selected} by GDB and many GDB commands
        !          1344: refer implicitly to the selected frame.  In particular, whenever you ask
        !          1345: GDB for the value of a variable in the program, the value is found in the
        !          1346: selected frame.  There are special GDB commands to select whichever frame
        !          1347: you are interested in.
        !          1348: 
        !          1349: When the program stops, GDB automatically selects the currently executing
        !          1350: frame and describes it briefly as the @samp{frame} command does
        !          1351: (@pxref{Frame Info, Info}).
        !          1352: 
        !          1353: @menu
        !          1354: * Frames::          Explanation of stack frames and terminology.
        !          1355: * Backtrace::       Summarizing many frames at once.
        !          1356: * Selection::       How to select a stack frame.
        !          1357: * Info: Frame Info, Commands to print information on stack frames.
        !          1358: @end menu
        !          1359: 
        !          1360: @node Frames, Backtrace, Stack, Stack
        !          1361: @section Stack Frames
        !          1362: 
        !          1363: @cindex frame
        !          1364: The call stack is divided up into contiguous pieces called @dfn{frames};
        !          1365: each frame is the data associated with one call to one function.  The frame
        !          1366: contains the arguments given to the function, the function's local
        !          1367: variables, and the address at which the function is executing.
        !          1368: 
        !          1369: @cindex initial frame
        !          1370: @cindex outermost frame
        !          1371: @cindex innermost frame
        !          1372: When your program is started, the stack has only one frame, that of the
        !          1373: function @code{main}.  This is called the @dfn{initial} frame or the
        !          1374: @dfn{outermost} frame.  Each time a function is called, a new frame is
        !          1375: made.  Each time a function returns, the frame for that function invocation
        !          1376: is eliminated.  If a function is recursive, there can be many frames for
        !          1377: the same function.  The frame for the function in which execution is
        !          1378: actually occurring is called the @dfn{innermost} frame.  This is the most
        !          1379: recently created of all the stack frames that still exist.
        !          1380: 
        !          1381: @cindex frame pointer
        !          1382: Inside your program, stack frames are identified by their addresses.  A
        !          1383: stack frame consists of many bytes, each of which has its own address; each
        !          1384: kind of computer has a convention for choosing one of those bytes whose
        !          1385: address serves as the address of the frame.  Usually this address is kept
        !          1386: in a register called the @dfn{frame pointer register} while execution is
        !          1387: going on in that frame.
        !          1388: 
        !          1389: @cindex frame number
        !          1390: GDB assigns numbers to all existing stack frames, starting with zero for
        !          1391: the innermost frame, one for the frame that called it, and so on upward.
        !          1392: These numbers do not really exist in your program; they are to give you a
        !          1393: way of talking about stack frames in GDB commands.
        !          1394: 
        !          1395: @cindex selected frame
        !          1396: Many GDB commands refer implicitly to one stack frame.  GDB records a stack
        !          1397: frame that is called the @dfn{selected} stack frame; you can select any
        !          1398: frame using one set of GDB commands, and then other commands will operate
        !          1399: on that frame.  When your program stops, GDB automatically selects the
        !          1400: innermost frame.
        !          1401: 
        !          1402: @node Backtrace, Selection, Frames, Stack
        !          1403: @section Backtraces
        !          1404: 
        !          1405: A backtrace is a summary of how the program got where it is.  It shows one
        !          1406: line per frame, for many frames, starting with the currently executing
        !          1407: frame (frame zero), followed by its caller (frame one), and on up the
        !          1408: stack.
        !          1409: 
        !          1410: @table @code
        !          1411: @item backtrace
        !          1412: @itemx bt
        !          1413: Print a backtrace of the entire stack: one line per frame for all
        !          1414: frames in the stack.
        !          1415: 
        !          1416: You can stop the backtrace at any time by typing the system interrupt
        !          1417: character, normally @kbd{Control-C}.
        !          1418: 
        !          1419: @item backtrace @var{n}
        !          1420: @itemx bt @var{n}
        !          1421: Similar, but stop after @var{n} frames.
        !          1422: @end table
        !          1423: 
        !          1424: Each line in a backtrace shows the frame number, the program counter, the
        !          1425: function and its arguments, and the source file name and line number (if
        !          1426: known).  The program counter is omitted if is the beginning of the code for
        !          1427: the source line.  This is the same as the first of the two lines printed
        !          1428: when you select a frame.
        !          1429: 
        !          1430: @node Selection, Frame Info, Backtrace, Stack
        !          1431: @section Selecting a Frame
        !          1432: 
        !          1433: Most commands for examining the stack and other data in the program work on
        !          1434: whichever stack frame is selected at the moment.  Here are the commands for
        !          1435: selecting a stack frame; all of them finish by printing a brief description
        !          1436: of the stack frame just selected.
        !          1437: 
        !          1438: @table @code
        !          1439: @item frame @var{n}
        !          1440: @kindex frame
        !          1441: Select frame number @var{n}.  Recall that frame zero is the innermost
        !          1442: (currently executing) frame, frame one is the frame that called the
        !          1443: innermost one, and so on.  The highest-numbered frame is @code{main}'s
        !          1444: frame.
        !          1445: 
        !          1446: @item frame @var{addr}
        !          1447: Select the frame at address @var{addr}.  This is useful mainly if the
        !          1448: chaining of stack frames has been damaged by a bug, making it
        !          1449: impossible for GDB to assign numbers properly to all frames.  In
        !          1450: addition, this can be useful when the program has multiple stacks and
        !          1451: switches between them.
        !          1452: 
        !          1453: @item up @var{n}
        !          1454: @kindex up
        !          1455: Select the frame @var{n} frames up from the frame previously selected.
        !          1456: For positive numbers @var{n}, this advances toward the outermost
        !          1457: frame, to higher frame numbers, to frames that have existed longer.
        !          1458: @var{n} defaults to one.
        !          1459: 
        !          1460: @item down @var{n}
        !          1461: @kindex down
        !          1462: Select the frame @var{n} frames down from the frame previously
        !          1463: selected.  For positive numbers @var{n}, this advances toward the
        !          1464: innermost frame, to lower frame numbers, to frames that were created
        !          1465: more recently.  @var{n} defaults to one.
        !          1466: @end table
        !          1467: 
        !          1468: All of these commands end by printing some information on the frame that
        !          1469: has been selected: the frame number, the function name, the arguments, the
        !          1470: source file and line number of execution in that frame, and the text of
        !          1471: that source line.  For example:
        !          1472: 
        !          1473: @example
        !          1474: #3  main (argc=3, argv=??, env=??) at main.c, line 67
        !          1475: 67        read_input_file (argv[i]);
        !          1476: @end example
        !          1477: 
        !          1478: After such a printout, the @samp{list} command with no arguments will print
        !          1479: ten lines centered on the point of execution in the frame.  @xref{List}.
        !          1480: 
        !          1481: @node Frame Info,, Selection, Stack
        !          1482: @section Information on a Frame
        !          1483: 
        !          1484: There are several other commands to print information about the selected
        !          1485: stack frame.
        !          1486: 
        !          1487: @table @code
        !          1488: @item frame
        !          1489: This command prints a brief description of the selected stack frame.
        !          1490: It can be abbreviated @samp{f}.  With an argument, this command is
        !          1491: used to select a stack frame; with no argument, it does not change
        !          1492: which frame is selected, but still prints the same information.
        !          1493: 
        !          1494: @item info frame
        !          1495: @kindex info frame
        !          1496: This command prints a verbose description of the selected stack frame,
        !          1497: including the address of the frame, the addresses of the next frame in
        !          1498: (called by this frame) and the next frame out (caller of this frame),
        !          1499: the address of the frame's arguments, the program counter saved in it
        !          1500: (the address of execution in the caller frame), and which registers
        !          1501: were saved in the frame.  The verbose description is useful when
        !          1502: something has gone wrong that has made the stack format fail to fit
        !          1503: the usual conventions.
        !          1504: 
        !          1505: @item info frame @var{addr}
        !          1506: Print a verbose description of the frame at address @var{addr},
        !          1507: without selecting that frame.  The selected frame remains unchanged by
        !          1508: this command.
        !          1509: 
        !          1510: @item info args
        !          1511: @kindex info args
        !          1512: Print the arguments of the selected frame, each on a separate line.
        !          1513: 
        !          1514: @item info locals
        !          1515: @kindex info locals
        !          1516: Print the local variables of the selected frame, each on a separate
        !          1517: line.  These are all variables declared static or automatic within all
        !          1518: program blocks that execution in this frame is currently inside of.
        !          1519: @end table
        !          1520: 
        !          1521: @node Source, Data, Stack, Top
        !          1522: @chapter Examining Source Files
        !          1523: 
        !          1524: GDB knows which source files your program was compiled from, and
        !          1525: can print parts of their text.  When your program stops, GDB
        !          1526: spontaneously prints the line it stopped in.  Likewise, when you
        !          1527: select a stack frame (@pxref{Selection}), GDB prints the line
        !          1528: which execution in that frame has stopped in.  You can also
        !          1529: print parts of source files by explicit command.
        !          1530: 
        !          1531: @menu
        !          1532: * List::        Using the @samp{list} command to print source files.
        !          1533: * Search::      Commands for searching source files.
        !          1534: * Source Path:: Specifying the directories to search for source files.
        !          1535: @end menu
        !          1536: 
        !          1537: @node List, Search, Source, Source
        !          1538: @section Printing Source Lines
        !          1539: 
        !          1540: @kindex list
        !          1541: To print lines from a source file, use the @samp{list} command
        !          1542: (abbreviated @samp{l}).  There are several ways to specify what part
        !          1543: of the file you want to print.
        !          1544: 
        !          1545: Here are the forms of @samp{list} command most commonly used:
        !          1546: 
        !          1547: @table @code
        !          1548: @item list @var{linenum}
        !          1549: Print ten lines centered around line number @var{linenum} in the
        !          1550: current source file.
        !          1551: 
        !          1552: @item list @var{function}
        !          1553: Print ten lines centered around the beginning of function
        !          1554: @var{function}.
        !          1555: 
        !          1556: @item list
        !          1557: Print ten more lines.  If the last lines printed were printed with a
        !          1558: @samp{list} command, this prints ten lines following the last lines
        !          1559: printed; however, if the last line printed was a solitary line printed
        !          1560: as part of displaying a stack frame (@pxref{Stack}), this prints ten
        !          1561: lines centered around that line.
        !          1562: 
        !          1563: @item list @minus{}
        !          1564: Print ten lines just before the lines last printed.
        !          1565: @end table
        !          1566: 
        !          1567: Repeating a @samp{list} command with @key{RET} discards the argument,
        !          1568: so it is equivalent to typing just @samp{list}.  This is more useful
        !          1569: than listing the same lines again.  An exception is made for an
        !          1570: argument of @samp{-}; that argument is preserved in repetition so that
        !          1571: each repetition moves up in the file.
        !          1572: 
        !          1573: In general, the @samp{list} command expects you to supply zero, one or two
        !          1574: @dfn{linespecs}.  Linespecs specify source lines; there are several ways
        !          1575: of writing them but the effect is always to specify some source line.
        !          1576: Here is a complete description of the possible arguments for @samp{list}:
        !          1577: 
        !          1578: @table @code
        !          1579: @item list @var{linespec}
        !          1580: Print ten lines centered around the line specified by @var{linespec}.
        !          1581: 
        !          1582: @item list @var{first},@var{last}
        !          1583: Print lines from @var{first} to @var{last}.  Both arguments are
        !          1584: linespecs.
        !          1585: 
        !          1586: @item list ,@var{last}
        !          1587: Print ten lines ending with @var{last}.
        !          1588: 
        !          1589: @item list @var{first},
        !          1590: Print ten lines starting with @var{first}.
        !          1591: 
        !          1592: @item list +
        !          1593: Print ten lines just after the lines last printed.
        !          1594: 
        !          1595: @item list @minus{}
        !          1596: Print ten lines just before the lines last printed.
        !          1597: 
        !          1598: @item list
        !          1599: As described in the preceding table.
        !          1600: @end table
        !          1601: 
        !          1602: Here are the ways of specifying a single source line---all the
        !          1603: kinds of linespec.
        !          1604: 
        !          1605: @table @asis
        !          1606: @item @var{linenum}
        !          1607: Specifies line @var{linenum} of the current source file.
        !          1608: When a @samp{list} command has two linespecs, this refers to
        !          1609: the same source file as the first linespec.
        !          1610: 
        !          1611: @item +@var{offset}
        !          1612: Specifies the line @var{offset} lines after the last line printed.
        !          1613: When used as the second linespec in a @samp{list} command that has
        !          1614: two, this specifies the line @var{offset} lines down from the
        !          1615: first linespec.
        !          1616: 
        !          1617: @item @minus{}@var{offset}
        !          1618: Specifies the line @var{offset} lines before the last line printed.
        !          1619: 
        !          1620: @item @var{filename}:@var{linenum}
        !          1621: Specifies line @var{linenum} in the source file @var{filename}.
        !          1622: 
        !          1623: @item @var{function}
        !          1624: Specifies the line of the open-brace that begins the body of the
        !          1625: function @var{function}.
        !          1626: 
        !          1627: @item @var{filename}:@var{function}
        !          1628: Specifies the line of the open-brace that begins the body of the
        !          1629: function @var{function} in the file @var{filename}.  The file name is
        !          1630: needed with a function name only for disambiguation of identically
        !          1631: named functions in different source files.
        !          1632: 
        !          1633: @item *@var{address}
        !          1634: Specifies the line containing the program address @var{address}.
        !          1635: @var{address} may be any expression.
        !          1636: @end table
        !          1637: 
        !          1638: One other command is used to map source lines to program addresses.
        !          1639: 
        !          1640: @table @code
        !          1641: @item info line @var{linenum}
        !          1642: @kindex info line
        !          1643: Print the starting and ending addresses of the compiled code for
        !          1644: source line @var{linenum}.
        !          1645: 
        !          1646: @kindex $_
        !          1647: The default examine address for the @samp{x} command is changed to the
        !          1648: starting address of the line, so that @samp{x/i} is sufficient to
        !          1649: begin examining the machine code (@pxref{Memory}).  Also, this address
        !          1650: is saved as the value of the convenience variable @samp{$_}
        !          1651: (@pxref{Convenience Vars}).
        !          1652: @end table
        !          1653: 
        !          1654: @node Search, Source Path, List, Source
        !          1655: @section Searching Source Files
        !          1656: @cindex searching
        !          1657: @kindex forward-search
        !          1658: @kindex reverse-search
        !          1659: 
        !          1660: There are two commands for searching through the current source file for a
        !          1661: regular expression.
        !          1662: 
        !          1663: The command @samp{forward-search @var{regexp}} checks each line, starting
        !          1664: with the one following the last line listed, for a match for @var{regexp}.
        !          1665: It lists the line that is found.  You can abbreviate the command name
        !          1666: as @samp{fo}.
        !          1667: 
        !          1668: The command @samp{reverse-search @var{regexp}} checks each line, starting
        !          1669: with the one before the last line listed and going backward, for a match
        !          1670: for @var{regexp}.  It lists the line that is found.  You can abbreviate
        !          1671: this command with as little as @samp{rev}.
        !          1672: 
        !          1673: @node Source Path,, Search, Source
        !          1674: @section Specifying Source Directories
        !          1675: 
        !          1676: @cindex source path
        !          1677: @cindex directories for source files
        !          1678: Executable programs do not record the directories of the source files they
        !          1679: were compiled from, just the names.  GDB remembers a list of directories to
        !          1680: search for source files; this is called the @dfn{source path}.  Each time
        !          1681: GDB wants a source file, it tries all the directories in the list, in the
        !          1682: order they are present in the list, until it finds a file with the desired
        !          1683: name.
        !          1684: 
        !          1685: @kindex directory
        !          1686: When you start GDB, its source path contains just the current working
        !          1687: directory.  To add other directories, use the @samp{directory} command.
        !          1688: @b{Note that the search path for executable files and the working directory
        !          1689: are @i{not} used for finding source files.}
        !          1690: 
        !          1691: @table @code
        !          1692: @item directory @var{dirname}
        !          1693: Add directory @var{dirname} to the end of the source path.
        !          1694: 
        !          1695: @item directory
        !          1696: Reset the source path to just the current working directory of GDB.
        !          1697: This requires confirmation.
        !          1698: 
        !          1699: @samp{directory} with no argument can cause source files previously
        !          1700: found by GDB to be found in a different directory.  To make this work
        !          1701: correctly, this command also clears out the tables GDB maintains
        !          1702: about the source files it has already found.
        !          1703: 
        !          1704: @item info directories
        !          1705: @kindex info directories
        !          1706: Print the source path: show which directories it contains.
        !          1707: @end table
        !          1708: 
        !          1709: Because the @samp{directory} command adds to the end of the source path,
        !          1710: it does not affect any file that GDB has already found.  If the source
        !          1711: path contains directories that you do not want, and these directories
        !          1712: contain misleading files with names matching your source files, the
        !          1713: way to correct the situation is as follows:
        !          1714: 
        !          1715: @enumerate
        !          1716: @item
        !          1717: Choose the directory you want at the beginning of the source path.
        !          1718: Use the @samp{cd} command to make that the current working directory.
        !          1719: 
        !          1720: @item
        !          1721: Use @samp{directory} with no argument to reset the source path to just
        !          1722: that directory.
        !          1723: 
        !          1724: @item
        !          1725: Use @samp{directory} with suitable arguments to add any other
        !          1726: directories you want in the source path.
        !          1727: @end enumerate
        !          1728: 
        !          1729: @node Data, Symbols, Source, Top
        !          1730: @chapter Examining Data
        !          1731: 
        !          1732: @cindex printing data
        !          1733: @cindex examining data
        !          1734: @kindex print
        !          1735: The usual way of examining data in your program is with the @samp{print}
        !          1736: command (abbreviated @samp{p}).  It evaluates and prints the value of any
        !          1737: valid expression of the language the program is written in (for now, C).
        !          1738: You type
        !          1739: 
        !          1740: @example
        !          1741: print @var{exp}
        !          1742: @end example
        !          1743: 
        !          1744: @noindent
        !          1745: where @var{exp} is any valid expression, and the value of @var{exp}
        !          1746: is printed in a format appropriate to its data type.
        !          1747: 
        !          1748: A more low-level way of examining data is with the @samp{x} command.
        !          1749: It examines data in memory at a specified address and prints it in a
        !          1750: specified format.
        !          1751: 
        !          1752: @menu
        !          1753: * Expressions::      Expressions that can be computed and printed.
        !          1754: * Variables::        Using your program's variables in expressions.
        !          1755: * Assignment::       Setting your program's variables.
        !          1756: * Arrays::           Examining part of memory as an array.
        !          1757: * Formats::          Specifying formats for printing values.
        !          1758: * Memory::           Examining memory explicitly.
        !          1759: * Auto Display::     Printing certain expressions whenever program stops.
        !          1760: * Value History::    Referring to values previously printed.
        !          1761: * Convenience Vars:: Giving names to values for future reference.
        !          1762: * Registers::        Referring to and storing in machine registers.
        !          1763: @end menu
        !          1764: 
        !          1765: @node Expressions, Variables, Data, Data
        !          1766: @section Expressions
        !          1767: 
        !          1768: @cindex expressions
        !          1769: Many different GDB commands accept an expression and compute its value.
        !          1770: Any kind of constant, variable or operator defined by the programming
        !          1771: language you are using is legal in an expression in GDB.  This includes
        !          1772: conditional expressions, function calls, casts and string constants.
        !          1773: 
        !          1774: Casts are supported in all languages, not just in C, because it is so
        !          1775: useful to cast a number into a pointer so as to examine a structure
        !          1776: at that address in memory.
        !          1777: 
        !          1778: GDB supports three kinds of operator in addition to those of programming
        !          1779: languages:
        !          1780: 
        !          1781: @table @code
        !          1782: @item @@
        !          1783: @samp{@@} is a binary operator for treating parts of memory as arrays.
        !          1784: @xref{Arrays}, for more information.
        !          1785: 
        !          1786: @item ::
        !          1787: @samp{::} allows you to specify a variable in terms of the file or
        !          1788: function it is defined in.  @xref{Variables}.
        !          1789: 
        !          1790: @item @{@var{type}@} @var{addr}
        !          1791: Refers to an object of type @var{type} stored at address @var{addr} in
        !          1792: memory.  @var{addr} may be any expression whose value is an integer or
        !          1793: pointer (but parentheses are required around nonunary operators, just as in
        !          1794: a cast).  This construct is allowed regardless of what kind of data is
        !          1795: officially supposed to reside at @var{addr}.@refill
        !          1796: @end table
        !          1797: 
        !          1798: @node Variables, Arrays, Expressions, Data
        !          1799: @section Program Variables
        !          1800: 
        !          1801: The most common kind of expression to use is the name of a variable
        !          1802: in your program.
        !          1803: 
        !          1804: Variables in expressions are understood in the selected stack frame
        !          1805: (@pxref{Selection}); they must either be global (or static) or be visible
        !          1806: according to the scope rules of the programming language from the point of
        !          1807: execution in that frame.  This means that in the function
        !          1808: 
        !          1809: @example
        !          1810: foo (a)
        !          1811:      int a;
        !          1812: @{
        !          1813:   bar (a);
        !          1814:   @{
        !          1815:     int b = test ();
        !          1816:     bar (b);
        !          1817:   @}
        !          1818: @}
        !          1819: @end example
        !          1820: 
        !          1821: @noindent
        !          1822: the variable @code{a} is usable whenever the program is executing
        !          1823: within the function @code{foo}, but the variable @code{b} is visible
        !          1824: only while the program is executing inside the block in which @code{b}
        !          1825: is declared.
        !          1826: 
        !          1827: As a special exception, you can refer to a variable or function whose
        !          1828: scope is a single source file even if the current execution point is not
        !          1829: in this file.  But it is possible to have more than one such variable
        !          1830: or function with the same name (if they are in different source files).
        !          1831: In such a case, it is not defined which one you will get.  If you wish,
        !          1832: you can specify any one of them using the colon-colon construct:
        !          1833: 
        !          1834: @example
        !          1835: @var{block}::@var{variable}
        !          1836: @end example
        !          1837: 
        !          1838: @noindent
        !          1839: Here @var{block} is the name of the source file whose variable you want.
        !          1840: 
        !          1841: @node Arrays, Formats, Variables, Data
        !          1842: @section Artificial Arrays
        !          1843: 
        !          1844: @cindex artificial array
        !          1845: It is often useful to print out several successive objects of the
        !          1846: same type in memory; a section of an array, or an array of
        !          1847: dynamically determined size for which only a pointer exists in the
        !          1848: program.
        !          1849: 
        !          1850: This can be done by constructing an @dfn{artificial array} with the
        !          1851: binary operator @samp{@@}.  The left operand of @samp{@@} should be
        !          1852: the first element of the desired array, as an individual object.
        !          1853: The right operand should be the length of the array.  The result is
        !          1854: an array value whose elements are all of the type of the left argument.
        !          1855: The first element is actually the left argument; the second element
        !          1856: comes from bytes of memory immediately following those that hold the
        !          1857: first element, and so on.  Here is an example.  If a program says
        !          1858: 
        !          1859: @example
        !          1860: int *array = (int *) malloc (len * sizeof (int));
        !          1861: @end example
        !          1862: 
        !          1863: @noindent
        !          1864: you can print the contents of @code{array} with
        !          1865: 
        !          1866: @example
        !          1867: p *array@@len
        !          1868: @end example
        !          1869: 
        !          1870: The left operand of @samp{@@} must reside in memory.  Array values made
        !          1871: with @samp{@@} in this way behave just like other arrays in terms of
        !          1872: subscripting, and are coerced to pointers when used in expressions.
        !          1873: (It would probably appear in an expression via the value history,
        !          1874: after you had printed it out.)
        !          1875: 
        !          1876: @node Formats, Memory, Arrays, Data
        !          1877: @section Formats
        !          1878: 
        !          1879: @cindex formatted output
        !          1880: @cindex output formats
        !          1881: GDB normally prints all values according to their data types.  Sometimes
        !          1882: this is not what you want.  For example, you might want to print a number
        !          1883: in hex, or a pointer in decimal.  Or you might want to view data in memory
        !          1884: at a certain address as a character string or an instruction.  These things
        !          1885: can be done with @dfn{output formats}.
        !          1886: 
        !          1887: The simplest use of output formats is to say how to print a value
        !          1888: already computed.  This is done by starting the arguments of the
        !          1889: @samp{print} command with a slash and a format letter.  The format
        !          1890: letters supported are:
        !          1891: 
        !          1892: @table @samp
        !          1893: @item x
        !          1894: Regard the bits of the value as an integer, and print the integer in
        !          1895: hexadecimal.
        !          1896: 
        !          1897: @item d
        !          1898: Print as integer in signed decimal.
        !          1899: 
        !          1900: @item u
        !          1901: Print as integer in unsigned decimal.
        !          1902: 
        !          1903: @item o
        !          1904: Print as integer in octal.
        !          1905: 
        !          1906: @item a
        !          1907: Print as an address, both absolute in hex and then relative
        !          1908: to a symbol defined as an address below it.
        !          1909: 
        !          1910: @item c
        !          1911: Regard as an integer and print it as a character constant.
        !          1912: 
        !          1913: @item f
        !          1914: Regard the bits of the value as a floating point number and print
        !          1915: using typical floating point syntax.
        !          1916: @end table
        !          1917: 
        !          1918: For example, to print the program counter in hex (@pxref{Registers}), type
        !          1919: 
        !          1920: @example
        !          1921: p/x $pc
        !          1922: @end example
        !          1923: 
        !          1924: @noindent
        !          1925: Note that no space is required before the slash; this is because command
        !          1926: names in GDB cannot contain a slash.
        !          1927: 
        !          1928: To reprint the last value in the value history with a different format,
        !          1929: you can use the @samp{print} command with just a format and no
        !          1930: expression.  For example, @samp{p/x} reprints the last value in hex.
        !          1931: 
        !          1932: @node Memory, Auto Display, Formats, Data
        !          1933: @subsection Examining Memory
        !          1934: 
        !          1935: @cindex examining memory
        !          1936: @kindex x
        !          1937: The command @samp{x} (for `examine') can be used to examine memory under
        !          1938: explicit control of formats, without reference to the program's data types.
        !          1939: 
        !          1940: @samp{x} is followed by a slash and an output format specification,
        !          1941: followed by an expression for an address.  The expression need not have
        !          1942: a pointer value (though it may); it is used as an integer, as the
        !          1943: address of a byte of memory.
        !          1944: 
        !          1945: The output format in this case specifies both how big a unit of memory
        !          1946: to examine and how to print the contents of that unit.  It is done
        !          1947: with one or two of the following letters:
        !          1948: 
        !          1949: These letters specify just the size of unit to examine:
        !          1950: 
        !          1951: @table @samp
        !          1952: @item b
        !          1953: Examine individual bytes.
        !          1954: 
        !          1955: @item h
        !          1956: Examine halfwords (two bytes each).
        !          1957: 
        !          1958: @item w
        !          1959: Examine words (four bytes each).
        !          1960: 
        !          1961: @cindex word
        !          1962: Many assemblers and cpu designers still use `word' for a 16-bit quantity,
        !          1963: as a holdover from specific predecessor machines of the 1970's that really
        !          1964: did use two-byte words.  But more generally the term `word' has always
        !          1965: referred to the size of quantity that a machine normally operates on and
        !          1966: stores in its registers.  This is 32 bits for all the machines that GNU
        !          1967: runs on.
        !          1968: 
        !          1969: @item g
        !          1970: Examine giant words (8 bytes).
        !          1971: @end table
        !          1972: 
        !          1973: These letters specify just the way to print the contents:
        !          1974: 
        !          1975: @table @samp
        !          1976: @item x
        !          1977: Print as integers in unsigned hexadecimal.
        !          1978: 
        !          1979: @item d
        !          1980: Print as integers in signed decimal.
        !          1981: 
        !          1982: @item u
        !          1983: Print as integers in unsigned decimal.
        !          1984: 
        !          1985: @item o
        !          1986: Print as integers in unsigned octal.
        !          1987: 
        !          1988: @item a
        !          1989: Print as an address, both absolute in hex and then relative
        !          1990: to a symbol defined as an address below it.
        !          1991: 
        !          1992: @item c
        !          1993: Print as character constants.
        !          1994: 
        !          1995: @item f
        !          1996: Print as floating point.  This works only with sizes @samp{w} and
        !          1997: @samp{g}.
        !          1998: 
        !          1999: @item s
        !          2000: Print a null-terminated string of characters.  The specified unit size
        !          2001: is ignored; instead, the unit is however many bytes it takes to reach
        !          2002: a null character (including the null character).
        !          2003: 
        !          2004: @item i
        !          2005: Print a machine instruction in assembler syntax (or nearly).  The
        !          2006: specified unit size is ignored; the number of bytes in an instruction
        !          2007: varies depending on the type of machine, the opcode and the addressing
        !          2008: modes used.
        !          2009: @end table
        !          2010: 
        !          2011: If either the manner of printing or the size of unit fails to be specified,
        !          2012: the default is to use the same one that was used last.  If you don't want
        !          2013: to use any letters after the slash, you can omit the slash as well.
        !          2014: 
        !          2015: You can also omit the address to examine.  Then the address used is
        !          2016: just after the last unit examined.  This is why string and instruction
        !          2017: formats actually compute a unit-size based on the data: so that the
        !          2018: next string or instruction examined will start in the right place.
        !          2019: The @samp{print} command sometimes sets the default address for
        !          2020: the @samp{x} command; when the value printed resides in memory, the
        !          2021: default is set to examine the same location.  @samp{info line} also
        !          2022: sets the default for @samp{x}, to the address of the start of the
        !          2023: machine code for the specified line and @samp{info breakpoints} sets
        !          2024: it to the address of the last breakpoint listed.
        !          2025: 
        !          2026: When you use @key{RET} to repeat an @samp{x} command, it does not repeat
        !          2027: exactly the same: the address specified previously (if any) is ignored, so
        !          2028: that the repeated command examines the successive locations in memory
        !          2029: rather than the same ones.
        !          2030: 
        !          2031: You can examine several consecutive units of memory with one command by
        !          2032: writing a repeat-count after the slash (before the format letters, if any).
        !          2033: The repeat count must be a decimal integer.  It has the same effect as
        !          2034: repeating the @samp{x} command that many times except that the output may
        !          2035: be more compact with several units per line.
        !          2036: 
        !          2037: @example
        !          2038: x/10i $pc
        !          2039: @end example
        !          2040: 
        !          2041: @noindent
        !          2042: Prints ten instructions starting with the one to be executed next in the
        !          2043: selected frame.  After doing this, you could print another ten following
        !          2044: instructions with
        !          2045: 
        !          2046: @example
        !          2047: x/10
        !          2048: @end example
        !          2049: 
        !          2050: @noindent
        !          2051: in which the format and address are allowed to default.
        !          2052: 
        !          2053: @kindex $_
        !          2054: @kindex $__
        !          2055: The addresses and contents printed by the @samp{x} command are not put in
        !          2056: the value history because there is often too much of them and they would
        !          2057: get in the way.  Instead, GDB makes these values available for subsequent
        !          2058: use in expressions as values of the convenience variables @samp{$_} and
        !          2059: @samp{$__}.
        !          2060: 
        !          2061: After an @samp{x} command, the last address examined is available for use
        !          2062: in expressions in the convenience variable @samp{$_}.  The contents of that
        !          2063: address, as examined, are available in the convenience variable @samp{$__}.
        !          2064: 
        !          2065: If the @samp{x} command has a repeat count, the address and contents saved
        !          2066: are from the last memory unit printed; this is not the same as the last
        !          2067: address printed if several units were printed on the last line of output.
        !          2068: 
        !          2069: @node Auto Display, Value History, Memory, Data
        !          2070: @section Automatic Display
        !          2071: 
        !          2072: If you find that you want to print the value of an expression frequently
        !          2073: (to see how it changes), you might want to add it to the @dfn{automatic
        !          2074: display list} so that GDB will print its value each time the program stops.
        !          2075: Each expression added to the list is given a number to identify it;
        !          2076: to remove an expression from the list, you specify that number.
        !          2077: The automatic display looks like this:
        !          2078: 
        !          2079: @example
        !          2080: 2: foo = 38
        !          2081: 3: bar[5] = (struct hack *) 0x3804
        !          2082: @end example
        !          2083: 
        !          2084: @noindent
        !          2085: showing item numbers, expressions and their current values.
        !          2086: 
        !          2087: @table @code
        !          2088: @item display @var{exp}
        !          2089: @kindex display
        !          2090: Add the expression @var{exp} to the list of expressions to display
        !          2091: each time the program stops.
        !          2092: 
        !          2093: @item display/@var{fmt} @var{exp}
        !          2094: For @var{fmt} specifying only a display format and not a size or
        !          2095: count, add the expression @var{exp} to the auto-display list but
        !          2096: arranges to display it each time in the specified format @var{fmt}.
        !          2097: 
        !          2098: @item display/@var{fmt} @var{addr}
        !          2099: For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
        !          2100: number of units, add the expression @var{addr} as a memory address to
        !          2101: be examined each time the program stops.  Examining means in effect
        !          2102: doing @samp{x/@var{fmt} @var{addr}}.  @xref{Memory}.
        !          2103: 
        !          2104: @item undisplay @var{n}
        !          2105: @kindex undisplay
        !          2106: Remove item number @var{n} from the list of expressions to display.
        !          2107: 
        !          2108: @item display
        !          2109: Display the current values of the expressions on the list, just as is
        !          2110: done when the program stops.
        !          2111: 
        !          2112: @item info display
        !          2113: @kindex info display
        !          2114: Print the list of expressions to display automatically, each one
        !          2115: with its item number, but without showing the values.
        !          2116: @end table
        !          2117: 
        !          2118: @node Value History, Convenience Vars, Auto Display, Data
        !          2119: @section Value History
        !          2120: 
        !          2121: @cindex value history
        !          2122: Every value printed by the @samp{print} command is saved for the entire
        !          2123: session in GDB's @dfn{value history} so that you can refer to it in
        !          2124: other expressions.
        !          2125: 
        !          2126: @cindex $
        !          2127: @cindex $$
        !          2128: The values printed are given @dfn{history numbers} for you to refer to them
        !          2129: by.  These are successive integers starting with 1.  @samp{print} shows you
        !          2130: the history number assigned to a value by printing @samp{$@var{n} = }
        !          2131: before the value; here @var{n} is the history number.
        !          2132: 
        !          2133: To refer to any previous value, use @samp{$} followed by the value's
        !          2134: history number.  The output printed by @samp{print} is designed to remind
        !          2135: you of this.  Just @samp{$} refers to the most recent value in the history,
        !          2136: and @samp{$$} refers to the value before that.
        !          2137: 
        !          2138: For example, suppose you have just printed a pointer to a structure and
        !          2139: want to see the contents of the structure.  It suffices to type
        !          2140: 
        !          2141: @example
        !          2142: p *$
        !          2143: @end example
        !          2144: 
        !          2145: If you have a chain of structures where the component @samp{next} points
        !          2146: to the next one, you can print the contents of the next one with
        !          2147: 
        !          2148: @example
        !          2149: p *$.next
        !          2150: @end example
        !          2151: 
        !          2152: It might be useful to repeat this command many times by typing @key{RET}.
        !          2153: 
        !          2154: Note that the history records values, not expressions.  If the value of
        !          2155: @code{x} is 4 and you type
        !          2156: 
        !          2157: @example
        !          2158: print x
        !          2159: set x=5
        !          2160: @end example
        !          2161: 
        !          2162: @noindent
        !          2163: then the value recorded in the value history by the @samp{print} command
        !          2164: remains 4 even though @code{x}'s value has changed.
        !          2165: 
        !          2166: @table @code
        !          2167: @item info history
        !          2168: @kindex info history
        !          2169: Print the last ten values in the value history, with their item
        !          2170: numbers.  This is like @samp{p $$9} repeated ten times, except that
        !          2171: @samp{info history} does not change the history.
        !          2172: 
        !          2173: @item info history @var{n}
        !          2174: Print ten history values centered on history item number @var{n}.
        !          2175: @end table
        !          2176: 
        !          2177: @node Convenience Vars, Registers, Value History, Data
        !          2178: @section Convenience Variables
        !          2179: 
        !          2180: @cindex convenience variables
        !          2181: GDB provides @dfn{convenience variables} that you can use within GDB to
        !          2182: hold on to a value and refer to it later.  These variables exist entirely
        !          2183: within GDB; they are not part of your program, and setting a convenience
        !          2184: variable has no effect on further execution of your program.  That's why
        !          2185: you can use them freely.
        !          2186: 
        !          2187: Convenience variables have names starting with @samp{$}.  Any name starting
        !          2188: with @samp{$} can be used for a convenience variable, unless it is one of
        !          2189: the predefined set of register names (@pxref{Registers}).
        !          2190: 
        !          2191: You can save a value in a convenience variable with an assignment
        !          2192: expression, just as you would set a variable in your program.  Example:
        !          2193: 
        !          2194: @example
        !          2195: set $foo = *object_ptr
        !          2196: @end example
        !          2197: 
        !          2198: @noindent
        !          2199: would save in @samp{$foo} the value contained in the object pointed to by
        !          2200: @code{object_ptr}.
        !          2201: 
        !          2202: Using a convenience variable for the first time creates it; but its value
        !          2203: is @code{void} until you assign a new value.  You can alter the value with
        !          2204: another assignment at any time.
        !          2205: 
        !          2206: Convenience variables have no fixed types.  You can assign a convenience
        !          2207: variable any type of value, even if it already has a value of a different
        !          2208: type.  The convenience variable as an expression has whatever type its
        !          2209: current value has.
        !          2210: 
        !          2211: @table @code
        !          2212: @item info convenience
        !          2213: @kindex info convenience
        !          2214: Print a list of convenience variables used so far, and their values.
        !          2215: Abbreviated @samp{i con}.
        !          2216: @end table
        !          2217: 
        !          2218: One of the ways to use a convenience variable is as a counter to be
        !          2219: incremented or a pointer to be advanced.  For example:
        !          2220: 
        !          2221: @example
        !          2222: set $i = 0
        !          2223: print bar[$i++]->contents
        !          2224: @i{@dots{}repeat that command by typing @key{RET}.}
        !          2225: @end example
        !          2226: 
        !          2227: Some convenience variables are created automatically by GDB and given
        !          2228: values likely to be useful.
        !          2229: 
        !          2230: @table @samp
        !          2231: @item $_
        !          2232: The variable @samp{$_} is automatically set by the @samp{x} command to
        !          2233: the last address examined (@pxref{Memory}).  Other commands which
        !          2234: provide a default address for @samp{x} to examine also set @samp{$_}
        !          2235: to that address; these commands include @samp{info line} and @samp{info
        !          2236: breakpoint}.
        !          2237: 
        !          2238: @item $__
        !          2239: The variable @samp{$__} is automatically set by the @samp{x} command
        !          2240: to the value found in the last address examined.
        !          2241: @end table
        !          2242: 
        !          2243: @node Registers,, Convenience Vars, Data
        !          2244: @section Registers
        !          2245: 
        !          2246: @cindex registers
        !          2247: Machine register contents can be referred to in expressions as variables
        !          2248: with names starting with @samp{$}.  The names of registers are different
        !          2249: for each machine; use @samp{info registers} to see the names used on your
        !          2250: machine.  The names @samp{$pc} and @samp{$sp} are used on all machines for
        !          2251: the program counter register and the stack pointer.  Often @samp{$fp} is
        !          2252: used for a register that contains a pointer to the current stack frame.
        !          2253: 
        !          2254: GDB always considers the contents of an ordinary register as an integer
        !          2255: when the register is examined in this way.  Some machines have special
        !          2256: registers which can hold nothing but floating point; these registers are
        !          2257: considered floating point.  There is no way to refer to the contents of an
        !          2258: ordinary register as floating point value (although you can @emph{print}
        !          2259: it as a floating point value with @samp{print/f $@var{regname}}).
        !          2260: 
        !          2261: Some registers have distinct ``raw'' and ``virtual'' data formats.  This
        !          2262: means that the data format in which the register contents are saved by the
        !          2263: operating system is not the same one that your program normally sees.  For
        !          2264: example, the registers of the 68881 floating point coprocessor are always
        !          2265: saved in ``extended'' format, but all C programs expect to work with
        !          2266: ``double'' format.  In such cases, GDB normally works with the virtual
        !          2267: format only (the format that makes sense for your program), but the
        !          2268: @samp{info registers} command prints the data in both formats.
        !          2269: 
        !          2270: Register values are relative to the selected stack frame
        !          2271: (@pxref{Selection}).  This means that you get the value that the register
        !          2272: would contain if all stack frames farther in were exited and their saved
        !          2273: registers restored.  In order to see the real contents of all registers,
        !          2274: you must select the innermost frame (with @samp{frame 0}).
        !          2275: 
        !          2276: Some registers are never saved (typically those numbered zero or one)
        !          2277: because they are used for returning function values; for these registers,
        !          2278: relativization makes no difference.
        !          2279: 
        !          2280: @table @code
        !          2281: @item info registers
        !          2282: @kindex info registers
        !          2283: Print the names and relativized values of all registers.
        !          2284: 
        !          2285: @item info registers @var{regname}
        !          2286: Print the relativized value of register @var{regname}.  @var{regname}
        !          2287: may be any register name valid on the machine you are using, with
        !          2288: or without the initial @samp{$}.
        !          2289: @end table
        !          2290: 
        !          2291: @subsection Examples
        !          2292: 
        !          2293: You could print the program counter in hex with
        !          2294: 
        !          2295: @example
        !          2296: p/x $pc
        !          2297: @end example
        !          2298: 
        !          2299: @noindent
        !          2300: or print the instruction to be executed next with
        !          2301: 
        !          2302: @example
        !          2303: x/i $pc
        !          2304: @end example
        !          2305: 
        !          2306: @noindent
        !          2307: or add four to the stack pointer with
        !          2308: 
        !          2309: @example
        !          2310: set $sp += 4
        !          2311: @end example
        !          2312: 
        !          2313: @noindent
        !          2314: The last is a way of removing one word from the stack, on machines where
        !          2315: stacks grow downward in memory (most machines, nowadays).  This assumes
        !          2316: that the innermost stack frame is selected.  Setting @samp{$sp} is
        !          2317: not allowed when other stack frames are selected.
        !          2318: 
        !          2319: @node Symbols, Altering, Data, Top
        !          2320: @chapter Examining the Symbol Table
        !          2321: 
        !          2322: The commands described in this section allow you to make inquiries for
        !          2323: information about the symbols (names of variables, functions and types)
        !          2324: defined in your program.  This information is found by GDB in the symbol
        !          2325: table loaded by the @samp{symbol-file} command; it is inherent in the text
        !          2326: of your program and does not change as the program executes.
        !          2327: 
        !          2328: @table @code
        !          2329: @item whatis @var{exp}
        !          2330: @kindex whatis
        !          2331: Print the data type of expression @var{exp}.  @var{exp} is not
        !          2332: actually evaluated, and any side-effecting operations (such as
        !          2333: assignments or function calls) inside it do not take place.
        !          2334: 
        !          2335: @item whatis
        !          2336: Print the data type of @samp{$}, the last value in the value history.
        !          2337: 
        !          2338: @item info address @var{symbol}
        !          2339: @kindex info address
        !          2340: Describe where the data for @var{symbol} is stored.  For register
        !          2341: variables, this says which register.  For other automatic variables,
        !          2342: this prints the stack-frame offset at which the variable is always
        !          2343: stored.  Note the contrast with @samp{print &@var{symbol}}, which does
        !          2344: not work at all for register variables and for automatic variables
        !          2345: prints the exact address of the current instantiation of the variable.
        !          2346: 
        !          2347: @item ptype @var{typename}
        !          2348: @kindex ptype
        !          2349: Print a description of data type @var{typename}.  @var{typename} may be
        !          2350: the name of a type, or for C code it may have the form
        !          2351: @samp{struct @var{struct-tag}}, @samp{union @var{union-tag}} or
        !          2352: @samp{enum @var{enum-tag}}.@refill
        !          2353: 
        !          2354: @item info sources
        !          2355: @kindex info sources
        !          2356: Print the names of all source files in the program for which there
        !          2357: is debugging information.
        !          2358: 
        !          2359: @item info functions
        !          2360: @kindex info functions
        !          2361: Print the names and data types of all defined functions.
        !          2362: 
        !          2363: @item info functions @var{regexp}
        !          2364: Print the names and data types of all defined functions
        !          2365: whose names contain a match for regular expression @var{regexp}.
        !          2366: Thus, @samp{info fun step} finds all functions whose names
        !          2367: include @samp{step}; @samp{info fun ^step} finds those whose names
        !          2368: start with @samp{step}.
        !          2369: 
        !          2370: @item info variables
        !          2371: @kindex info variables
        !          2372: Print the names and data types of all variables that are declared
        !          2373: outside of functions.
        !          2374: 
        !          2375: @item info variables @var{regexp}
        !          2376: Print the names and data types of all variables, declared outside of
        !          2377: functions, whose names contain a match for regular expression
        !          2378: @var{regexp}.
        !          2379: 
        !          2380: @item info types
        !          2381: @kindex info types
        !          2382: Print all data types that are defined in the program.
        !          2383: 
        !          2384: @item info types @var{regexp}
        !          2385: Print all data types that are defined in the program whose names
        !          2386: contain a match for regular expression @var{regexp}.
        !          2387: 
        !          2388: @item printsyms @var{filename}
        !          2389: @kindex printsyms
        !          2390: Write a complete dump of the debugger's symbol data into the
        !          2391: file @var{filename}.
        !          2392: @end table
        !          2393: 
        !          2394: @node Altering, Sequences, Symbols, Top
        !          2395: @chapter Altering Execution
        !          2396: 
        !          2397: There are several ways to alter the execution of your program with GDB
        !          2398: commands.
        !          2399: 
        !          2400: @menu
        !          2401: * Assignment::    Altering variable values or memory contents.
        !          2402: * Jumping::       Altering control flow.
        !          2403: * Signaling::     Making signals happen in the program.
        !          2404: * Returning::     Making a function return prematurely.
        !          2405: @end menu
        !          2406: 
        !          2407: @node Assignment, Jumping, Altering, Altering
        !          2408: @section Assignment to Variables
        !          2409: 
        !          2410: @cindex assignment
        !          2411: @cindex setting variables
        !          2412: To alter the value of a variable, evaluate an assignment expression.
        !          2413: For example,
        !          2414: 
        !          2415: @example
        !          2416: print x=4
        !          2417: @end example
        !          2418: 
        !          2419: @noindent
        !          2420: would store the value 4 into the variable @code{x}, and then print
        !          2421: the value of the assignment expression (which is 4).
        !          2422: 
        !          2423: @kindex set
        !          2424: If you are not interested in seeing the value of the assignment, use the
        !          2425: @samp{set} command instead of the @samp{print} command.  @samp{set} is
        !          2426: really the same as @samp{print} except that the expression's value is not
        !          2427: printed and is not put in the value history (@pxref{Value History}).  The
        !          2428: expression is evaluated only for side effects.
        !          2429: 
        !          2430: GDB allows more implicit conversions in assignments than C does; you can
        !          2431: freely store an integer value into a pointer variable or vice versa, and
        !          2432: any structure can be converted to any other structure that is the same
        !          2433: length or shorter.
        !          2434: 
        !          2435: In C, all the other assignment operators such as @samp{+=} and @samp{++}
        !          2436: are supported as well.
        !          2437: 
        !          2438: To store into arbitrary places in memory, use the @samp{@{@dots{}@}}
        !          2439: construct to generate a value of specified type at a specified address
        !          2440: (@pxref{Expressions}).  For example,
        !          2441: 
        !          2442: @example
        !          2443: set @{int@}0x83040 = 4
        !          2444: @end example
        !          2445: 
        !          2446: @node Jumping, Signaling, Assignment, Altering
        !          2447: @section Continuing at a Different Address
        !          2448: 
        !          2449: @table @code
        !          2450: @item jump @var{linenum}
        !          2451: @kindex jump
        !          2452: Resume execution at line number @var{linenum}.  Execution may stop
        !          2453: immediately if there is a breakpoint there.
        !          2454: 
        !          2455: The @samp{jump} command does not change the current stack frame, or
        !          2456: the stack pointer, or the contents of any memory location or any
        !          2457: register other than the program counter.  If line @var{linenum} is in
        !          2458: a different function from the one currently executing, the results may
        !          2459: be wild if the two functions expect different patterns of arguments or
        !          2460: of local variables.  For this reason, the @samp{jump} command requests
        !          2461: confirmation if the specified line is not in the function currently
        !          2462: executing.  However, even wild results are predictable based on
        !          2463: changing the program counter.
        !          2464: 
        !          2465: @item jump *@var{address}
        !          2466: Resume execution at the instruction at address @var{address}.
        !          2467: @end table
        !          2468: 
        !          2469: A similar effect can be obtained by storing a new value into the register
        !          2470: @samp{$pc}, but not exactly the same.
        !          2471: 
        !          2472: @example
        !          2473: set $pc = 0x485
        !          2474: @end example
        !          2475: 
        !          2476: @noindent
        !          2477: specifies the address at which execution will resume, but does not resume
        !          2478: execution.  That does not happen until you use the @samp{cont} command or a
        !          2479: stepping command (@pxref{Stepping}).
        !          2480: 
        !          2481: @node Signaling, Returning, Jumping, Altering
        !          2482: @section Giving the Program a Signal
        !          2483: 
        !          2484: @table @code
        !          2485: @item signal @var{signalnum}
        !          2486: @kindex signal
        !          2487: Resume execution where the program stopped, but give it immediately
        !          2488: the signal number @var{signalnum}.
        !          2489: 
        !          2490: Alternatively, if @var{signalnum} is zero, continue execution and give
        !          2491: no signal.  This may be useful when the program has received a signal
        !          2492: and the @samp{cont} command would allow the program to see that
        !          2493: signal.
        !          2494: @end table
        !          2495: 
        !          2496: @node Returning,, Signaling, Altering
        !          2497: @section Returning from a Function
        !          2498: 
        !          2499: @cindex returning from a function
        !          2500: @kindex return
        !          2501: You can make any function call return immediately, using the @samp{return}
        !          2502: command.
        !          2503: 
        !          2504: First select the stack frame that you wish to return from
        !          2505: (@pxref{Selection}).  Then type the @samp{return} command.  If you wish to
        !          2506: specify the value to be returned, give that as an argument.
        !          2507: 
        !          2508: This pops the selected stack frame (and any other frames inside of it),
        !          2509: leaving its caller as the innermost remaining frame.  That frame becomes
        !          2510: selected.  The specified value is stored in the registers used for
        !          2511: returning values of functions.
        !          2512: 
        !          2513: The @samp{return} command does not resume execution; it leaves the program
        !          2514: stopped in the state that would exist if the function had just returned.
        !          2515: Contrast this with the @samp{finish} command (@pxref{Stepping}), which
        !          2516: resumes execution @i{until} the selected stack frame returns naturally.
        !          2517: 
        !          2518: @node Sequences, Emacs, Altering, Top
        !          2519: @chapter Canned Sequences of Commands
        !          2520: 
        !          2521: GDB provides two ways to store sequences of commands for execution as a
        !          2522: unit: user-defined commands and command files.
        !          2523: 
        !          2524: @menu
        !          2525: * Define::         User-defined commands.
        !          2526: * Command Files::  Command files.
        !          2527: * Output::         Controlled output commands useful in
        !          2528:                    user-defined commands and command files.
        !          2529: @end menu
        !          2530: 
        !          2531: @node Define, Command Files, Sequences, Sequences
        !          2532: @section User-Defined Commands
        !          2533: 
        !          2534: @cindex user-defined commands
        !          2535: A @dfn{user-defined command} is a sequence of GDB commands to which you
        !          2536: assign a new name as a command.  This is done with the @samp{define}
        !          2537: command.
        !          2538: 
        !          2539: @table @code
        !          2540: @item define @var{commandname}
        !          2541: @kindex define
        !          2542: Define a command named @var{commandname}.  If there is already a command
        !          2543: by that name, you are asked to confirm that you want to redefine it.
        !          2544: 
        !          2545: The definition of the command is made up of other GDB command lines,
        !          2546: which are given following the @samp{define} command.  The end of these
        !          2547: commands is marked by a line containing @samp{end}.
        !          2548: 
        !          2549: @item document @var{commandname}
        !          2550: @kindex document
        !          2551: Give documentation to the user-defined command @var{commandname}.  The
        !          2552: command @var{commandname} must already be defined.  This command reads
        !          2553: lines of documentation just as @samp{define} reads the lines of the
        !          2554: command definition.  After the @samp{document} command is finished,
        !          2555: @samp{help} on command @var{commandname} will print the documentation
        !          2556: you have specified.
        !          2557: 
        !          2558: You may use the @samp{document} command again to change the
        !          2559: documentation of a command.  Redefining the command with @samp{define}
        !          2560: does not change the documentation.
        !          2561: @end table
        !          2562: 
        !          2563: User-defined commands do not take arguments.  When they are executed, the
        !          2564: commands of the definition are not printed.  An error in any command
        !          2565: stops execution of the user-defined command.
        !          2566: 
        !          2567: Commands that would ask for confirmation if used interactively proceed
        !          2568: without asking when used inside a user-defined command.  Many GDB commands
        !          2569: that normally print messages to say what they are doing omit the messages
        !          2570: when used in user-defined command.
        !          2571: 
        !          2572: @node Command Files, Output, Define, Sequences
        !          2573: @section Command Files
        !          2574: 
        !          2575: @cindex command files
        !          2576: A command file for GDB is a file of lines that are GDB commands.  Comments
        !          2577: (lines starting with @samp{#}) may also be included.  An empty line in a
        !          2578: command file does nothing; it does not mean to repeat the last command, as
        !          2579: it would from the terminal.
        !          2580: 
        !          2581: @cindex init file
        !          2582: @cindex .gdbinit
        !          2583: When GDB starts, it automatically executes its @dfn{init files}, command
        !          2584: files named @file{.gdbinit}.  GDB reads the init file (if any) in your home
        !          2585: directory and then the init file (if any) in the current working
        !          2586: directory.  (The init files are not executed if the @samp{-nx} option
        !          2587: is given.)  You can also request the execution of a command file with the
        !          2588: @samp{source} command:
        !          2589: 
        !          2590: @table @code
        !          2591: @item source @var{filename}
        !          2592: @kindex source
        !          2593: Execute the command file @var{filename}.
        !          2594: @end table
        !          2595: 
        !          2596: The lines in a command file are executed sequentially.  They are not
        !          2597: printed as they are executed.  An error in any command terminates execution
        !          2598: of the command file.
        !          2599: 
        !          2600: Commands that would ask for confirmation if used interactively proceed
        !          2601: without asking when used in a command file.  Many GDB commands that
        !          2602: normally print messages to say what they are doing omit the messages
        !          2603: when used in a command file.
        !          2604: 
        !          2605: @node Output,, Command Files, Sequences
        !          2606: @section Commands for Controlled Output
        !          2607: 
        !          2608: During the execution of a command file or a user-defined command, the only
        !          2609: output that appears is what is explicitly printed by the commands of the
        !          2610: definition.  This section describes three commands useful for generating
        !          2611: exactly the output you want.
        !          2612: 
        !          2613: @table @code
        !          2614: @item echo @var{text}
        !          2615: @kindex echo
        !          2616: Print @var{text}.  Nonprinting characters can be included in
        !          2617: @var{text} using C escape sequences, such as @samp{\n} to print a
        !          2618: newline.  @b{No newline will be printed unless you specify one.}
        !          2619: 
        !          2620: A backslash at the end of @var{text} is ignored.  It is useful for
        !          2621: outputting a string ending in spaces, since trailing spaces are
        !          2622: trimmed from all arguments.  A backslash at the beginning preserves
        !          2623: leading spaces in the same way, because @samp{\ } as an escape
        !          2624: sequence stands for a space.  Thus, to print @samp{ and foo = }, do
        !          2625: 
        !          2626: @example
        !          2627: echo \ and foo = \
        !          2628: @end example
        !          2629: 
        !          2630: @item output @var{expression}
        !          2631: @kindex output
        !          2632: Print the value of @var{expression} and nothing but that value: no
        !          2633: newlines, no @samp{$@var{nn} = }.  The value is not entered in the
        !          2634: value history either.
        !          2635: 
        !          2636: @item output/@var{fmt} @var{expression}
        !          2637: Print the value of @var{expression} in format @var{fmt}.
        !          2638: @xref{Formats}, for more information.
        !          2639: 
        !          2640: @item printf @var{string}, @var{expressions}@dots{}
        !          2641: @kindex printf
        !          2642: Print the values of the @var{expressions} under the control of
        !          2643: @var{string}.  The @var{expressions} are separated by commas and may
        !          2644: be either numbers or pointers.  Their values are printed as specified
        !          2645: by @var{string}, exactly as if the program were to execute
        !          2646: 
        !          2647: @example
        !          2648: printf (@var{string}, @var{expressions}@dots{});
        !          2649: @end example
        !          2650: 
        !          2651: For example, you can print two values in hex like this:
        !          2652: 
        !          2653: @example
        !          2654: printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
        !          2655: @end example
        !          2656: 
        !          2657: The only backslash-escape sequences that you can use in the string are
        !          2658: the simple ones that consist of backslash followed by a letter.
        !          2659: @end table
        !          2660: 
        !          2661: @node Emacs, Remote, Sequences, Top
        !          2662: @chapter Using GDB under GNU Emacs
        !          2663: 
        !          2664: A special interface allows you to use GNU Emacs to view (and
        !          2665: edit) the source files for the program you are debugging with
        !          2666: GDB.
        !          2667: 
        !          2668: To use this interface, use the command @kbd{M-x gdb} in Emacs.
        !          2669: Give the executable file you want to debug as an argument.  This
        !          2670: command starts a GDB process as a subprocess of Emacs, with input
        !          2671: and output through a newly created Emacs buffer.
        !          2672: 
        !          2673: Using this GDB process is just like using GDB normally except for two things:
        !          2674: 
        !          2675: @itemize @bullet
        !          2676: @item
        !          2677: All ``terminal'' input and output goes through the Emacs buffer.  This
        !          2678: applies both to GDB commands and their output, and to the input and
        !          2679: output done by the program you are debugging.
        !          2680: 
        !          2681: This is useful because it means that you can copy the text of previous
        !          2682: commands and input them again; you can even use parts of the output
        !          2683: in this way.
        !          2684: 
        !          2685: All the facilities of Emacs's Shell mode are available for this purpose.
        !          2686: 
        !          2687: @item
        !          2688: GDB displays source code through Emacs.  Each time GDB displays a
        !          2689: stack frame, Emacs automatically finds the source file for that frame
        !          2690: and puts an arrow (@samp{=>}) at the left margin of the current line.
        !          2691: 
        !          2692: Explicit GDB @samp{list} or search commands still produce output as
        !          2693: usual, but you probably will have no reason to use them.
        !          2694: @end itemize
        !          2695: 
        !          2696: In the GDB I/O buffer, you can use these special Emacs commands:
        !          2697: 
        !          2698: @table @kbd
        !          2699: @item M-s
        !          2700: Execute to another source line, like the GDB @samp{step} command.
        !          2701: 
        !          2702: @item M-n
        !          2703: Execute to next source line in this function, skipping all function
        !          2704: calls, like the GDB @samp{next} command.
        !          2705: 
        !          2706: @item M-i
        !          2707: Execute one instruction, like the GDB @samp{stepi} command.
        !          2708: 
        !          2709: @item M-u
        !          2710: Move up one stack frame (and display that frame's source file in
        !          2711: Emacs), like the GDB @samp{up} command.
        !          2712: 
        !          2713: @item M-d
        !          2714: Move down one stack frame (and display that frame's source file in
        !          2715: Emacs), like the GDB @samp{down} command.  (This means that you cannot
        !          2716: delete words in the usual fashion in the GDB buffer; I am guessing you
        !          2717: won't often want to do that.)
        !          2718: 
        !          2719: @item C-c C-f
        !          2720: Execute until exit from the selected stack frame, like the GDB
        !          2721: @samp{finish} command.
        !          2722: @end table
        !          2723: 
        !          2724: In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
        !          2725: tells GDB to set a breakpoint on the source line point is on.
        !          2726: 
        !          2727: The source files displayed in Emacs are in ordinary Emacs buffers
        !          2728: which are visiting the source files in the usual way.  You can edit
        !          2729: the files with these buffers if you wish; but keep in mind that GDB
        !          2730: communicates with Emacs in terms of line numbers.  If you add or
        !          2731: delete lines from the text, the line numbers that GDB knows will cease
        !          2732: to correspond properly to the code.
        !          2733: 
        !          2734: @node Remote, Commands, Emacs, Top
        !          2735: @chapter Remote Kernel Debugging
        !          2736: 
        !          2737: GDB has a special facility for debugging a remote machine via a serial
        !          2738: connection.  This can be used for kernel debugging.
        !          2739: 
        !          2740: The program to be debugged on the remote machine needs to contain a
        !          2741: debugging device driver which talks to GDB over the serial line using the
        !          2742: protocol described below.  The same version of GDB that is used ordinarily
        !          2743: can be used for this.
        !          2744: 
        !          2745: @menu
        !          2746: * Remote Commands::       Commands used to start and finish remote debugging.
        !          2747: @end menu
        !          2748: 
        !          2749: For details of the communication protocol, see the comments in the GDB
        !          2750: source file @file{remote.c}.
        !          2751: 
        !          2752: @node Remote Commands,, Remote, Remote
        !          2753: @section Commands for Remote Debugging
        !          2754: 
        !          2755: To start remote debugging, first run GDB and specify as an executable file
        !          2756: the program that is running in the remote machine.  This tells GDB how
        !          2757: to find the program's symbols and the contents of its pure text.  Then
        !          2758: establish communication using the @samp{attach} command with a device
        !          2759: name rather than a pid as an argument.  For example:
        !          2760: 
        !          2761: @example
        !          2762: attach /dev/ttyd
        !          2763: @end example
        !          2764: 
        !          2765: @noindent
        !          2766: if the serial line is connected to the device named @file{/dev/ttyd}.  This
        !          2767: will stop the remote machine if it is not already stopped.
        !          2768: 
        !          2769: Now you can use all the usual commands to examine and change data and to
        !          2770: step and continue the remote program.
        !          2771: 
        !          2772: To resume the remote program and stop debugging it, use the @samp{detach}
        !          2773: command.
        !          2774: 
        !          2775: @node Commands, Concepts, Remote, Top
        !          2776: @unnumbered Command Index
        !          2777: 
        !          2778: @printindex ky
        !          2779: 
        !          2780: @node Concepts,, Commands, Top
        !          2781: @unnumbered Concept Index
        !          2782: 
        !          2783: @printindex cp
        !          2784: 
        !          2785: @contents
        !          2786: @bye

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.