Annotation of 43BSDReno/contrib/emacs-18.55/info/gdb-1, revision 1.1

1.1     ! root        1: Info file gdb, produced by texinfo-format-buffer   -*-Text-*-
        !             2: from file gdb.texinfo
        !             3: 
        !             4: This file documents the GNU debugger GDB.
        !             5: 
        !             6: Copyright (C) 1988 Free Software Foundation, Inc.
        !             7: 
        !             8: Permission is granted to make and distribute verbatim copies of
        !             9: this manual provided the copyright notice and this permission notice
        !            10: are preserved on all copies.
        !            11: 
        !            12: Permission is granted to copy and distribute modified versions of this
        !            13: manual under the conditions for verbatim copying, provided also that the
        !            14: sections entitled "Distribution" and "GDB General Public License" are
        !            15: included exactly as in the original, and provided that the entire resulting
        !            16: derived work is distributed under the terms of a permission notice
        !            17: identical to this one.
        !            18: 
        !            19: Permission is granted to copy and distribute translations of this manual
        !            20: into another language, under the above conditions for modified versions,
        !            21: except that the sections entitled "Distribution" and "GDB General Public
        !            22: License" may be included in a translation approved by the author instead
        !            23: of in the original English.
        !            24: 
        !            25: 
        !            26: 
        !            27: File: gdb  Node: Top, Up: (DIR), Next: Commands
        !            28: 
        !            29: Summary of GDB
        !            30: **************
        !            31: 
        !            32: The purpose of a debugger such as GDB is to allow you to execute another
        !            33: program while examining what is going on inside it.  We call the other
        !            34: program "your program" or "the program being debugged".
        !            35: 
        !            36: GDB can do four kinds of things (plus other things in support of these):
        !            37: 
        !            38:   1. Start the program, specifying anything that might affect its behavior.
        !            39:      
        !            40:   2. Make the program stop on specified conditions.
        !            41:      
        !            42:   3. Examine what has happened, when the program has stopped, so that you
        !            43:      can see bugs happen.
        !            44:      
        !            45:   4. Change things in the program, so you can correct the effects of one bug
        !            46:      and go on to learn about another without having to recompile first.
        !            47: 
        !            48: * Menu:
        !            49: 
        !            50: * License::    The GDB General Public License gives you permission
        !            51:               to redistribute GDB on certain terms; and also
        !            52:               explains that there is no warranty.
        !            53: * Input::      GDB command syntax and input conventions.
        !            54: * Files::      Specifying files for GDB to operate on.
        !            55: * Options::    GDB arguments and options.
        !            56: * Compilation::Compiling your program so you can debug it.
        !            57: * Running::    Running your program under GDB.
        !            58: * Stopping::   Making your program stop.  Why it may stop.  What to do then.
        !            59: * Stack::      Examining your program's stack.
        !            60: * Source::     Examining your program's source files.
        !            61: * Data::       Examining data in your program.
        !            62: * Symbols::    Examining the debugger's symbol table.
        !            63: * Altering::   Altering things in your program.
        !            64: * Sequences::  Canned command sequences for repeated use.
        !            65: * Emacs::      Using GDB through GNU Emacs.
        !            66: * Remote::     Remote kernel debugging across a serial line.
        !            67: * Commands::   Index of GDB commands.
        !            68: * Concepts::   Index of GDB concepts.
        !            69: 
        !            70: 
        !            71: File: gdb  Node: License, Prev: Top, Up: Top, Next: Input
        !            72: 
        !            73: GDB General Public License
        !            74: **************************
        !            75:                           (Clarified 11 Feb 1988)
        !            76: 
        !            77:   The license agreements of most software companies keep you at the mercy
        !            78: of those companies.  By contrast, our general public license is intended to
        !            79: give everyone the right to share GDB.  To make sure that you get the rights
        !            80: we want you to have, we need to make restrictions that forbid anyone to
        !            81: deny you these rights or to ask you to surrender the rights.  Hence this
        !            82: license agreement.
        !            83: 
        !            84:   Specifically, we want to make sure that you have the right to give away
        !            85: copies of GDB, that you receive source code or else can get it if you want
        !            86: it, that you can change GDB or use pieces of it in new free programs, and
        !            87: that you know you can do these things.
        !            88: 
        !            89:   To make sure that everyone has such rights, we have to forbid you to
        !            90: deprive anyone else of these rights.  For example, if you distribute copies
        !            91: of GDB, you must give the recipients all the rights that you have.  You
        !            92: must make sure that they, too, receive or can get the source code.  And you
        !            93: must tell them their rights.
        !            94: 
        !            95:   Also, for our own protection, we must make certain that everyone finds
        !            96: out that there is no warranty for GDB.  If GDB is modified by someone else
        !            97: and passed on, we want its recipients to know that what they have is not
        !            98: what we distributed, so that any problems introduced by others will not
        !            99: reflect on our reputation.
        !           100: 
        !           101:   Therefore we (Richard Stallman and the Free Software Foundation,
        !           102: Inc.) make the following terms which say what you must do to be
        !           103: allowed to distribute or change GDB.
        !           104: 
        !           105: 
        !           106: Copying Policies
        !           107: ================
        !           108: 
        !           109:   1. You may copy and distribute verbatim copies of GDB source code as you
        !           110:      receive it, in any medium, provided that you conspicuously and
        !           111:      appropriately publish on each file a valid copyright notice "Copyright
        !           112:      (C) 1988 Free Software Foundation, Inc." (or with whatever year
        !           113:      is appropriate); keep intact the notices on all files that
        !           114:      refer to this License Agreement and to the absence of any warranty; and
        !           115:      give any other recipients of the GDB program a copy of this License
        !           116:      Agreement along with the program.  You may charge a distribution fee
        !           117:      for the physical act of transferring a copy.
        !           118:      
        !           119:   2. You may modify your copy or copies of GDB source code or any portion
        !           120:      of it, and copy and distribute such modifications under the terms of
        !           121:      Paragraph 1 above, provided that you also do the following:
        !           122:      
        !           123:         * cause the modified files to carry prominent notices stating
        !           124:           that you changed the files and the date of any change; and
        !           125:           
        !           126:         * cause the whole of any work that you distribute or publish, that
        !           127:           in whole or in part contains or is a derivative of GDB or any
        !           128:           part thereof, to be licensed at no charge to all third parties on
        !           129:           terms identical to those contained in this License Agreement
        !           130:           (except that you may choose to grant more extensive warranty
        !           131:           protection to some or all third parties, at your option).
        !           132:           
        !           133:         * if the modified program serves as a debugger, cause it, when
        !           134:           started running in the simplest and usual way, to print an
        !           135:           announcement including a valid copyright notice "Copyright
        !           136:           (C) 1988 Free Software Foundation, Inc." (or with the
        !           137:           year that is appropriate), saying that there is no warranty (or
        !           138:           else, saying that you provide a warranty) and that users may
        !           139:           redistribute the program under these conditions, and telling the
        !           140:           user how to view a copy of this License Agreement.
        !           141:           
        !           142:         * You may charge a distribution fee for the physical act of
        !           143:           transferring a copy, and you may at your option offer warranty
        !           144:           protection in exchange for a fee.
        !           145:      
        !           146:      Mere aggregation of another unrelated program with this program (or its
        !           147:      derivative) on a volume of a storage or distribution medium does not bring
        !           148:      the other program under the scope of these terms.
        !           149:      
        !           150:   3. You may copy and distribute GDB (or a portion or derivative of it,
        !           151:      under Paragraph 2) in object code or executable form under the terms
        !           152:      of Paragraphs 1 and 2 above provided that you also do one of the
        !           153:      following:
        !           154:      
        !           155:         * accompany it with the complete corresponding machine-readable
        !           156:           source code, which must be distributed under the terms of
        !           157:           Paragraphs 1 and 2 above; or,
        !           158:           
        !           159:         * accompany it with a written offer, valid for at least three
        !           160:           years, to give any third party free (except for a nominal
        !           161:           shipping charge) a complete machine-readable copy of the
        !           162:           corresponding source code, to be distributed under the terms of
        !           163:           Paragraphs 1 and 2 above; or,
        !           164:           
        !           165:         * accompany it with the information you received as to where the
        !           166:           corresponding source code may be obtained.  (This alternative is
        !           167:           allowed only for noncommercial distribution and only if you
        !           168:           received the program in object code or executable form alone.)
        !           169:      
        !           170:      For an executable file, complete source code means all the source code
        !           171:      for all modules it contains; but, as a special exception, it need not
        !           172:      include source code for modules which are standard libraries that
        !           173:      accompany the operating system on which the executable file runs.
        !           174:      
        !           175:   4. You may not copy, sublicense, distribute or transfer GDB except as
        !           176:      expressly provided under this License Agreement.  Any attempt
        !           177:      otherwise to copy, sublicense, distribute or transfer GDB is void and
        !           178:      your rights to use GDB under this License agreement shall be
        !           179:      automatically terminated.  However, parties who have received computer
        !           180:      software programs from you with this License Agreement will not have
        !           181:      their licenses terminated so long as such parties remain in full
        !           182:      compliance.
        !           183:      
        !           184:   5. If you wish to incorporate parts of GDB into other free programs whose
        !           185:      distribution conditions are different, write to the Free Software
        !           186:      Foundation.  We have not yet worked out a simple rule that can be
        !           187:      stated here, but we will often permit this.  We will be guided by the
        !           188:      two goals of preserving the free status of all derivatives our free
        !           189:      software and of promoting the sharing and reuse of software.
        !           190: 
        !           191: 
        !           192: NO WARRANTY
        !           193: ===========
        !           194: 
        !           195:   BECAUSE GDB IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
        !           196: NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.  EXCEPT
        !           197: WHEN OTHERWISE STATED IN WRITING, THE FREE SOFTWARE FOUNDATION, INC,
        !           198: RICHARD M. STALLMAN AND/OR OTHER PARTIES PROVIDE GDB "AS IS"
        !           199: WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
        !           200: BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
        !           201: FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY
        !           202: AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE GDB
        !           203: PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
        !           204: SERVICING, REPAIR OR CORRECTION.
        !           205: 
        !           206:  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL FREE SOFTWARE
        !           207: FOUNDATION, INC., RICHARD M. STALLMAN, AND/OR ANY OTHER PARTY WHO MAY
        !           208: MODIFY AND REDISTRIBUTE GDB AS PERMITTED ABOVE, BE LIABLE TO YOU
        !           209: FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER
        !           210: SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
        !           211: INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
        !           212: BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A
        !           213: FAILURE OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY
        !           214: FREE SOFTWARE FOUNDATION, INC.) THE PROGRAM, EVEN IF YOU HAVE BEEN
        !           215: ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY
        !           216: OTHER PARTY.
        !           217: 
        !           218: 
        !           219: File: gdb  Node: Input, Prev: License, Up: Top, Next: Files
        !           220: 
        !           221: GDB Input Conventions
        !           222: *********************
        !           223: 
        !           224: GDB is invoked with the shell command `gdb'.  Once started, it reads
        !           225: commands from the terminal until you tell it to exit.
        !           226: 
        !           227: A GDB command is a single line of input.  There is no limit on how long
        !           228: it can be.  It starts with a command name, which is followed by arguments
        !           229: whose meaning depends on the command name.  Some command names do not
        !           230: allow arguments.
        !           231: 
        !           232: GDB command names may always be abbreviated if the abbreviation is
        !           233: unambiguous.  Sometimes even ambiguous abbreviations are allowed; for
        !           234: example, `s' is specially defined as equivalent to `step'
        !           235: even though there are other commands whose names start with `s'.
        !           236: Possible command abbreviations are often stated in the documentation
        !           237: of the individual commands.
        !           238: 
        !           239: A blank line as input to GDB means to repeat the previous command verbatim.
        !           240: Certain commands do not allow themselves to be repeated this way; these are
        !           241: commands for which unintentional repetition might cause trouble and which
        !           242: you are unlikely to want to repeat.  Certain others (`list' and
        !           243: `x') act differently when repeated because that is more useful.
        !           244: 
        !           245: A line of input starting with `#' is a comment; it does nothing.
        !           246: This is useful mainly in command files (*Note Command Files::).
        !           247: 
        !           248: GDB "prompts" for commands with a string that is normally `(gdb)'.
        !           249: When debugging GDB with GDB, it is useful to change the prompt in one of
        !           250: the GDBs so that you can distinguish them.  This can be done with the
        !           251: `set-prompt' command.
        !           252: 
        !           253: `set-prompt NEWPROMPT'     
        !           254:      Directs GDB to use NEWPROMPT as its prompt string henceforth.
        !           255: 
        !           256: To exit GDB, use the `quit' command (abbreviated `q').
        !           257: `Ctrl-c' will not exit from GDB, but rather will terminate the action
        !           258: of any GDB command that is in progress and return to GDB command level.
        !           259: It is safe to type `Ctrl-c' at any time because GDB does not allow
        !           260: it to take effect until a time when it is safe.
        !           261: 
        !           262: 
        !           263: File: gdb  Node: Files, Prev: Input, Up: Top, Next: Options
        !           264: 
        !           265: Specifying GDB's Files
        !           266: **********************
        !           267: 
        !           268: GDB needs to know the filename of the program to be debugged.  To debug a
        !           269: core dump of a previous run, GDB must be told the filename of the core
        !           270: dump.
        !           271: 
        !           272: * Menu:
        !           273: 
        !           274: * Arguments: File Arguments.   Specifying files with arguments
        !           275:                                 (when you start GDB).
        !           276: * Commands: File Commands.     Specifying files with GDB commands.
        !           277: 
        !           278: 
        !           279: File: gdb  Node: File Arguments, Prev: Files, Up: Files, Next: File Commands
        !           280: 
        !           281: Specifying Files with Arguments
        !           282: ===============================
        !           283: 
        !           284: The usual way to specify the executable and core dump file names is with
        !           285: two command arguments given when you start GDB.  The first argument is used
        !           286: as the file for execution and symbols, and the second argument (if any) is
        !           287: used as the core dump file name.  Thus,
        !           288: 
        !           289:      gdb progm core
        !           290: 
        !           291: specifies `progm' as the executable program and `core' as a core
        !           292: dump file to examine.  (You do not need to have a core dump file if what
        !           293: you plan to do is debug the program interactively.)
        !           294: 
        !           295: *Note Options::, for full information on command options and arguments for
        !           296: GDB.
        !           297: 
        !           298: 
        !           299: File: gdb  Node: File Commands, Prev: File Arguments, Up: Files
        !           300: 
        !           301: Specifying Files with Commands
        !           302: ==============================
        !           303: 
        !           304: Usually you specify the files for GDB to work with by giving arguments when
        !           305: you invoke GDB.  But occasionally it is necessary to change to a different
        !           306: file during a GDB session.  Or you may run GDB and forget to specify the
        !           307: files you want to use.  In these situations the GDB commands to specify new
        !           308: files are useful.
        !           309: 
        !           310: `exec-file FILENAME'     
        !           311:      Specify that the program to be run is found in FILENAME.  If you
        !           312:      do not specify a directory and the file is not found in GDB's working
        !           313:      directory, GDB will use the environment variable `PATH' as a list
        !           314:      of directories to search, just as the shell does when looking for a
        !           315:      program to run.
        !           316:      
        !           317: `symbol-file FILENAME'     
        !           318:      Read symbol table information from file FILENAME.  `PATH'
        !           319:      is searched when necessary.  Most of the time you will use both the
        !           320:      `exec-file' and `symbol-file' commands on the same file.
        !           321:      
        !           322:      `symbol-file' with no argument clears out GDB's symbol table.
        !           323:      
        !           324: `core-file FILENAME'     
        !           325:      Specify the whereabouts of a core dump file to be used as the
        !           326:      "contents of memory".  Note that the core dump contains only the
        !           327:      writable parts of memory; the read-only parts must come from the
        !           328:      executable file.
        !           329:      
        !           330:      `core-file' with no argument specifies that no core file is
        !           331:      to be used.
        !           332:      
        !           333: `kill'     
        !           334:      Cancel running the program under GDB.  This could be used if you wish
        !           335:      to debug a core dump instead.  GDB ignores any core dump file if it is
        !           336:      actually running the program, so the `kill' command is the only
        !           337:      sure way to go back to using the core dump file.
        !           338:      
        !           339: `info files'     
        !           340:      Print the names of the executable and core dump files currently in
        !           341:      use by GDB, and the file from which symbols were loaded.
        !           342: 
        !           343: While all three file-specifying commands allow both absolute and relative
        !           344: file names as arguments, GDB always converts the file name to an absolute
        !           345: one and remembers it that way.
        !           346: 
        !           347: The `symbol-file' command causes GDB to forget the contents of its
        !           348: convenience variables, the value history, and all breakpoints and
        !           349: auto-display expressions.  This is because they may contain pointers to the
        !           350: internal data recording symbols and data types, which are part of the old
        !           351: symbol table data being discarded inside GDB.
        !           352: 
        !           353: 
        !           354: File: gdb  Node: Options, Prev: Files, Up: Top, Next: Compilation
        !           355: 
        !           356: Options and Arguments for GDB
        !           357: *****************************
        !           358: 
        !           359: When you invoke GDB, you can pass commands telling it what files to
        !           360: operate on and what other things to do.
        !           361: 
        !           362: * Menu:
        !           363: 
        !           364: * Mode Options::     Options controlling modes of operation.
        !           365: * File Options::     Options to specify files (executable, coredump, commands)
        !           366: * Other Arguments::  Any other arguments without options
        !           367:                        also specify files.
        !           368: 
        !           369: 
        !           370: File: gdb  Node: Mode Options, Prev: Options, Up: Options, Next: File Options
        !           371: 
        !           372: Mode Options
        !           373: ============
        !           374: 
        !           375: `-nx'     
        !           376:      Do not execute commands from the init files `.gdbinit'.
        !           377:      Normally, the commands in these files are executed after all the
        !           378:      command options and arguments have been processed.  *Note Command Files::.
        !           379:      
        !           380: `-q'     
        !           381:      "Quiet".  Do not print the usual introductory messages.
        !           382:      
        !           383: `-batch'     
        !           384:      Run in batch mode.  Exit with code 1 after processing all the command
        !           385:      files specified with `-x' (and `.gdbinit', if not
        !           386:      inhibited).  Exit also if, due to an error, GDB would otherwise
        !           387:      attempt to read a command from the terminal.
        !           388:      
        !           389: `-fullname'     
        !           390:      This option is used when Emacs runs GDB as a subprocess.  It tells GDB
        !           391:      to output the full file name and line number in a standard,
        !           392:      recognizable fashion each time a stack frame is displayed (which
        !           393:      includes each time the program stops).  This recognizable format looks
        !           394:      like two `\032' characters, followed by the filename, line number
        !           395:      and character position separated by colons, and a newline.  The
        !           396:      Emacs-to-GDB interface program uses the two `\032' characters as
        !           397:      a signal to display the source code for the frame.
        !           398: 
        !           399: 
        !           400: File: gdb  Node: File Options, Prev: Mode Options, Up: Options, Next: Other Arguments
        !           401: 
        !           402: File-specifying Options
        !           403: =======================
        !           404: 
        !           405: All the options and command line arguments given are processed
        !           406: in sequential order.  The order makes a difference when the
        !           407: `-x' command is used.
        !           408: 
        !           409: `-s FILE'     
        !           410:      Read symbol table from file FILE.
        !           411:      
        !           412: `-e FILE'     
        !           413:      Use file FILE as the executable file to execute when
        !           414:      appropriate, and for examining pure data in conjunction with a core
        !           415:      dump.
        !           416:      
        !           417: `-se FILE'     
        !           418:      Read symbol table from file FILE and use it as the executable
        !           419:      file.
        !           420:      
        !           421: `-c FILE'     
        !           422:      Use file FILE as a core dump to examine.
        !           423:      
        !           424: `-x FILE'     
        !           425:      Execute GDB commands from file FILE.
        !           426:      
        !           427: `-d DIRECTORY'     
        !           428:      Add DIRECTORY to the path to search for source files.
        !           429: 
        !           430: 
        !           431: File: gdb  Node: Other Arguments, Prev: File Options, Up: Options
        !           432: 
        !           433: Other Arguments
        !           434: ===============
        !           435: 
        !           436: If there are arguments to GDB that are not options or associated with
        !           437: options, the first one specifies the symbol table and executable file name
        !           438: (as if it were preceded by `-se') and the second one specifies a core
        !           439: dump file name (as if it were preceded by `-c').
        !           440: 
        !           441: 
        !           442: File: gdb  Node: Compilation, Prev: Options, Up: Top, Next: Running
        !           443: 
        !           444: Compiling Your Program for Debugging
        !           445: ************************************
        !           446: 
        !           447: In order to debug a program effectively, you need to ask for debugging
        !           448: information when you compile it.  This information in the object file
        !           449: describes the data type of each variable or function and the correspondence
        !           450: between source line numbers and addresses in the executable code.
        !           451: 
        !           452: To request debugging information, specify the `-g' option when you run
        !           453: the compiler.
        !           454: 
        !           455: The Unix C compiler is unable to handle the `-g' and `-O' options
        !           456: together.  This means that you cannot ask for optimization if you ask for
        !           457: debugger information.
        !           458: 
        !           459: The GNU C compiler supports `-g' with or without `-O', making it
        !           460: possible to debug optimized code.  We recommend that you *always* use
        !           461: `-g' whenever you compile a program.  You may think the program is
        !           462: correct, but there's no sense in pushing your luck.
        !           463: 
        !           464: If you are using the GNU C compiler, the GNU assembler and the GNU linker,
        !           465: you can choose between two formats of debugging information: the standard
        !           466: Unix format, which is what you get with `-g', and GDB's own format,
        !           467: which you request by using `-gg' instead of `-g'.  This stores
        !           468: debugging information in the executable file in a format much like that
        !           469: which is used inside GDB.  This has these advantages and disadvantages:
        !           470: 
        !           471:    * GDB can read `-gg' format more than twice as fast as Unix
        !           472:      `-g' format.
        !           473:      
        !           474:    * The `-gg' format uses much more disk space than Unix format.
        !           475:      
        !           476:    * The Unix debuggers can understand only Unix format, so you cannot use
        !           477:      Unix source-level debuggers if you compile with `-gg'.  (The
        !           478:      `adb' debugger works with either format; it does not use this
        !           479:      information in any case.)
        !           480: 
        !           481: 
        !           482: File: gdb  Node: Running, Prev: Compilation, Up: Top, Next: Stopping
        !           483: 
        !           484: Running Your Program Under GDB
        !           485: ******************************
        !           486: 
        !           487: To start your program under GDB, use the `run' command.  The program
        !           488: must already have been specified using the `exec-file' command or with
        !           489: an argument to GDB (*Note Files::); what `run' does is create an
        !           490: inferior process, load the program into it, and set it in motion.
        !           491: 
        !           492: The execution of a program is affected by certain information it receives
        !           493: from its superior.  GDB provides ways to specify them, which you must do
        !           494: before starting the program.  (You can change them after starting the
        !           495: program, but such changes do not affect the program unless you start it
        !           496: over again.)
        !           497: 
        !           498: The arguments.     
        !           499:      You specify the arguments to give the program as the arguments of the
        !           500:      `run' command.
        !           501:      
        !           502: The environment.     
        !           503:      The program normally inherits its environment from GDB, but you can
        !           504:      use the GDB commands `set-environment' and `unset-environment' to
        !           505:      change parts of the environment that will be given to the program.
        !           506:      
        !           507: The working directory.     
        !           508:      The program inherits its working directory from GDB.  You can set GDB's
        !           509:      working directory with the `cd' command in GDB.
        !           510: 
        !           511: After the `run' command, the debugger does nothing but wait for your
        !           512: program to stop.  *Note Stopping::.
        !           513: 
        !           514: * Menu:
        !           515: 
        !           516: * Arguments::          Specifying the arguments for your program.
        !           517: * Environment::        Specifying the environment for your program.
        !           518: * Working Directory::  Specifying the working directory for giving
        !           519:                        to your program when it is run.
        !           520: * Input/Output::       Specifying the program's standard input and output.
        !           521: * Attach::             Debugging a process started outside GDB.
        !           522: 
        !           523: 
        !           524: File: gdb  Node: Arguments, Prev: Running, Up: Running, Next: Environment
        !           525: 
        !           526: Your Program's Arguments
        !           527: ========================
        !           528: 
        !           529: You specify the arguments to give the program as the arguments of the
        !           530: `run' command.  They are passed to a shell, which expands wildcard
        !           531: characters and performs redirection of I/O, and thence to the program.
        !           532: 
        !           533: `run' with no arguments uses the same arguments used by the previous
        !           534: `run'.
        !           535: 
        !           536: The command `set-args' can be used to specify the arguments to be used
        !           537: the next time the program is run.  If `set-args' has no arguments, it
        !           538: means to use no arguments the next time the program is run.  If you have
        !           539: run your program with arguments and want to run it again with no arguments,
        !           540: this is the only way to do so.
        !           541: 
        !           542: 
        !           543: File: gdb  Node: Environment, Prev: Arguments, Up: Running, Next: Working Directory
        !           544: 
        !           545: Your Program's Environment
        !           546: ==========================
        !           547: 
        !           548: The "environment" consists of a set of "environment variables" and
        !           549: their values.  Environment variables conventionally record such things as
        !           550: your user name, your home directory, your terminal type, and your search
        !           551: path for programs to run.  Usually you set up environment variables with
        !           552: the shell and they are inherited by all the other programs you run.  When
        !           553: debugging, it can be useful to try running the program with different
        !           554: environments without having to start the debugger over again.
        !           555: 
        !           556: `info environment VARNAME'     
        !           557:      Print the value of environment variable VARNAME to be given to
        !           558:      your program when it is started.  This command can be abbreviated
        !           559:      `i env VARNAME'.
        !           560:      
        !           561: `info environment'     
        !           562:      Print the names and values of all environment variables to be given to
        !           563:      your program when it is started.  This command can be abbreviated
        !           564:      `i env'.
        !           565:      
        !           566: `set-environment VARNAME VALUE'     
        !           567:      Sets environment variable VARNAME to VALUE, for your
        !           568:      program only, not for GDB itself.  VALUE may be any string; the
        !           569:      values of environment variables are just strings, and any
        !           570:      interpretation is supplied by your program itself.  This command
        !           571:      can be abbreviated as short as `set-e'.
        !           572:      
        !           573: `unset-environment VARNAME'     
        !           574:      Remove variable VARNAME from the environment to be passed to
        !           575:      your program.  This is different from `set-env VARNAME ='
        !           576:      because `unset-environment' makes a variable not be defined at
        !           577:      all, which is distinguishable from an empty value.  This command can
        !           578:      be abbreviated `unset'.
        !           579: 
        !           580: 
        !           581: File: gdb  Node: Working Directory, Prev: Environment, Up: Running, Next: Input/Output
        !           582: 
        !           583: Your Program's Working Directory
        !           584: ================================
        !           585: 
        !           586: Each time you start your program with `run', it inherits its working
        !           587: directory from the current working directory of GDB.  GDB's working
        !           588: directory is initially whatever it inherited from its superior, but you can
        !           589: specify the working directory for GDB with the `cd' command.
        !           590: 
        !           591: The GDB working directory also serves as a default for the commands
        !           592: that specify files for GDB to operate on.  *Note Files::.
        !           593: 
        !           594: `cd DIRECTORY'     
        !           595:      Set GDB's working directory to DIRECTORY.
        !           596:      
        !           597: `pwd'     
        !           598:      Print GDB's working directory.
        !           599: 
        !           600: 
        !           601: File: gdb  Node: Input/Output, Prev: Working Directory, Up: Running, Next: Attach
        !           602: 
        !           603: Your Program's Input and Output
        !           604: ===============================
        !           605: 
        !           606: By default, the program you run under GDB does input and output to the same
        !           607: terminal that GDB uses.
        !           608: 
        !           609: You can redirect the program's input and/or output using `sh'-style
        !           610: redirection commands in the `run' command.  For example,
        !           611: 
        !           612:      run > outfile
        !           613: 
        !           614: starts the program, diverting its output to the file `outfile'.
        !           615: 
        !           616: Another way to specify where the program should do input and output is with
        !           617: the `tty' command.  This command accepts a file name as argument, and
        !           618: causes this file to be the default for future `run' commands.  For
        !           619: example,
        !           620: 
        !           621:      tty /dev/ttyb
        !           622: 
        !           623: directs that processes started with subsequent `run' commands default
        !           624: to do input and output on the terminal `/dev/ttyb'.  An explicit
        !           625: redirection in `run' overrides the `tty' command.
        !           626: 
        !           627: When you use the `tty' command or redirect input in the `run'
        !           628: command, the *input for your program* comes from the specified file,
        !           629: but the input for GDB still comes from your terminal.  The program's
        !           630: controlling terminal is your (GDB's) terminal, not the terminal that the
        !           631: program is reading from; so if you want to type `C-c' to stop the
        !           632: program, you must type it on your (GDB's) terminal.  A `C-c' typed on
        !           633: the program's terminal is available to the program as ordinary input.
        !           634: 
        !           635: 
        !           636: File: gdb  Node: Attach, Prev: Input/Output, Up: Running
        !           637: 
        !           638: Debugging an Already-Running Process
        !           639: ====================================
        !           640: 
        !           641: Some operating systems (in particular, Sun) allow GDB to begin debugging an
        !           642: already-running process that was started outside of GDB.  To do this you
        !           643: must use the `attach' command instead of the `run' command.
        !           644: 
        !           645: The `attach' command requires one argument, which is the process-id of
        !           646: the process you want to debug.  (The usual way to find out the process-id
        !           647: of the process is with the `ps' utility.)
        !           648: 
        !           649: The first thing GDB after arranging to debug the process is to stop it.
        !           650: You can examine and modify an attached process with all the GDB commands
        !           651: that ordinarily available when you start processes with `run'.  You
        !           652: can insert breakpoints; you can step and continue; you can modify storage.
        !           653: If you would rather the process continue running, use the `continue'
        !           654: command after attaching.
        !           655: 
        !           656: When you are finished debugging the attached process, you can use the
        !           657: `detach' command to release it from GDB's control.  Detaching
        !           658: the process continues its execution.  After the `detach' command,
        !           659: that process and GDB become completely independent once more, and you
        !           660: are ready to `attach' another process or start one with `run'.
        !           661: 
        !           662: If you exit GDB or use the `run' command while you have an attached
        !           663: process, you kill that process.  You will be asked for confirmation if you
        !           664: try to do either of these things.
        !           665: 
        !           666: 
        !           667: File: gdb  Node: Stopping, Prev: Running, Up: Top, Next: Stack
        !           668: 
        !           669: Stopping and Continuing
        !           670: ***********************
        !           671: 
        !           672: When you run a program normally, it runs until exiting.  The purpose
        !           673: of using a debugger is so that you can stop it before that point;
        !           674: or so that if the program runs into trouble you can find out why.
        !           675: 
        !           676: * Menu:
        !           677: 
        !           678: * Signals::      Fatal signals in your program just stop it;
        !           679:                  then you can use GDB to see what is going on.
        !           680: * Breakpoints::  Breakpoints let you stop your program when it
        !           681:                  reaches a specified point in the code.
        !           682: * Continuing::   Resuming execution until the next signal or breakpoint.
        !           683: * Stepping::     Stepping runs the program a short distance and
        !           684:                  then stops it wherever it has come to.
        !           685: 
        !           686: 
        !           687: File: gdb  Node: Signals, Prev: Stopping, Up: Stopping, Next: Breakpoints
        !           688: 
        !           689: Signals
        !           690: =======
        !           691: 
        !           692: A signal is an asynchronous event that can happen in a program.  The
        !           693: operating system defines the possible kinds of signals, and gives each kind
        !           694: a name and a number.  For example, `SIGINT' is the signal a program
        !           695: gets when you type `Ctrl-c'; `SIGSEGV' is the signal a program
        !           696: gets from referencing a place in memory far away from all the areas in use;
        !           697: `SIGALRM' occurs when the alarm clock timer goes off (which happens
        !           698: only if the program has requested an alarm).
        !           699: 
        !           700: Some signals, including `SIGALRM', are a normal part of the
        !           701: functioning of the program.  Others, such as `SIGSEGV', indicate
        !           702: errors; these signals are "fatal" (kill the program immediately) if the
        !           703: program has not specified in advance some other way to handle the signal.
        !           704: `SIGINT' does not indicate an error in the program, but it is normally
        !           705: fatal so it can carry out the purpose of `Ctrl-c': to kill the program.
        !           706: 
        !           707: GDB has the ability to detect any occurrence of a signal in the program
        !           708: running under GDB's control.  You can tell GDB in advance what to do for
        !           709: each kind of signal.
        !           710: 
        !           711: Normally, GDB is set up to ignore non-erroneous signals like `SIGALRM'
        !           712: (so as not to interfere with their role in the functioning of the program)
        !           713: but to stop the program immediately whenever an error signal happens.
        !           714: You can change these settings with the `handle' command.  You must
        !           715: specify which signal you are talking about with its number.
        !           716: 
        !           717: `info signal'     
        !           718:      Print a table of all the kinds of signals and how GDB has been told to
        !           719:      handle each one.  You can use this to see the signal numbers of all
        !           720:      the defined types of signals.
        !           721:      
        !           722: `handle SIGNALNUM KEYWORDS...'     
        !           723:      Change the way GDB handles signal SIGNALNUM.  The KEYWORDS
        !           724:      say what change to make.
        !           725: 
        !           726: To use the `handle' command you must know the code number of the
        !           727: signal you are concerned with.  To find the code number, type `info
        !           728: signal' which prints a table of signal names and numbers.
        !           729: 
        !           730: The keywords allowed by the handle command can be abbreviated.  Their full
        !           731: names are
        !           732: 
        !           733: `stop'     
        !           734:      GDB should stop the program when this signal happens.  This implies
        !           735:      the `print' keyword as well.
        !           736:      
        !           737: `print'     
        !           738:      GDB should print a message when this signal happens.
        !           739:      
        !           740: `nostop'     
        !           741:      GDB should not stop the program when this signal happens.  It may
        !           742:      still print a message telling you that the signal has come in.
        !           743:      
        !           744: `noprint'     
        !           745:      GDB should not mention the occurrence of the signal at all.  This
        !           746:      implies the `nostop' keyword as well.
        !           747:      
        !           748: `pass'     
        !           749:      GDB should allow the program to see this signal; the program will be
        !           750:      able to handle the signal, or may be terminated if the signal is fatal
        !           751:      and not handled.
        !           752:      
        !           753: `nopass'     
        !           754:      GDB should not allow the program to see this signal.
        !           755: 
        !           756: When a signal has been set to stop the program, the program cannot see the
        !           757: signal until you continue.  It will see the signal then, if `pass' is
        !           758: in effect for the signal in question at that time.  In other words,
        !           759: after GDB reports a signal, you can use the `handle' command with
        !           760: `pass' or `nopass' to control whether that signal will be seen by
        !           761: the program when you later continue it.
        !           762: 
        !           763: You can also use the `signal' command to prevent the program from
        !           764: seeing a signal, or cause it to see a signal it normally would not see,
        !           765: or to give it any signal at any time.  *Note Signaling::.
        !           766: 
        !           767: 
        !           768: File: gdb  Node: Breakpoints, Prev: Signals, Up: Stopping, Next: Continuing
        !           769: 
        !           770: Breakpoints
        !           771: ===========
        !           772: 
        !           773: A "breakpoint" makes your program stop whenever a certain point in the
        !           774: program is reached.  You set breakpoints explicitly with GDB commands,
        !           775: specifying the place where the program should stop by line number, function
        !           776: name or exact address in the program.  You can add various other conditions
        !           777: to control whether the program will stop.
        !           778: 
        !           779: Each breakpoint is assigned a number when it is created; these numbers are
        !           780: successive integers starting with 1.  In many of the commands for controlling
        !           781: various features of breakpoints you use the breakpoint number to say which
        !           782: breakpoint you want to change.  Each breakpoint may be "enabled" or
        !           783: "disabled"; if disabled, it has no effect on the program until you
        !           784: enable it again.
        !           785: 
        !           786: The command `info break' prints a list of all breakpoints set and not
        !           787: cleared, showing their numbers, where in the program they are, and any
        !           788: special features in use for them.  Disabled breakpoints are included in the
        !           789: list, but marked as disabled.  `info break' with a breakpoint number
        !           790: as argument lists only that breakpoint.  The convenience variable `$_'
        !           791: and the default examining-address for the `x' command are set to the
        !           792: address of the last breakpoint listed (*Note Memory::).
        !           793: 
        !           794: * Menu:
        !           795: 
        !           796: * Set Breaks::     How to establish breakpoints.
        !           797: * Clear Breaks::   How to remove breakpoints no longer needed.
        !           798: * Disabling::      How to disable breakpoints (turn them off temporarily).
        !           799: * Conditions::     Making extra conditions on whether to stop.
        !           800: * Break Commands:: Commands to be executed at a breakpoint.
        !           801: * Error in Breakpoints:: "Cannot insert breakpoints" error--why, what to do.
        !           802: 
        !           803: 
        !           804: File: gdb  Node: Set Breaks, Prev: Breakpoints, Up: Breakpoints, Next: Clear Breaks
        !           805: 
        !           806: Setting Breakpoints
        !           807: -------------------
        !           808: 
        !           809: Breakpoints are set with the `break' command (abbreviated `b').
        !           810: You have several ways to say where the breakpoint should go.
        !           811: 
        !           812: `break FUNCTION'     
        !           813:      Set a breakpoint at entry to function FUNCTION.
        !           814:      
        !           815: `break LINENUM'     
        !           816:      Set a breakpoint at line LINENUM in the current source file.
        !           817:      That file is the last file whose source text was printed.  This
        !           818:      breakpoint will stop the program just before it executes any of the
        !           819:      code on that line.
        !           820:      
        !           821: `break FILENAME:LINENUM'     
        !           822:      Set a breakpoint at line LINENUM in source file FILENAME.
        !           823:      
        !           824: `break FILENAME:FUNCTION'     
        !           825:      Set a breakpoint at entry to function FUNCTION found in file
        !           826:      FILENAME.  Specifying a filename as well as a function name is
        !           827:      superfluous except when multiple files contain similarly named
        !           828:      functions.
        !           829:      
        !           830: `break *ADDRESS'     
        !           831:      Set a breakpoint at address ADDRESS.  You can use this to set
        !           832:      breakpoints in parts of the program which do not have debugging
        !           833:      information or source files.
        !           834:      
        !           835: `break'     
        !           836:      Set a breakpoint at the next instruction to be executed in the
        !           837:      selected stack frame (*Note Stack::).  This is a silly thing to do in
        !           838:      the innermost stack frame because the program would stop immediately
        !           839:      after being started, but it is very useful with another stack frame,
        !           840:      because it will cause the program to stop as soon as control returns
        !           841:      to that frame.
        !           842:      
        !           843: `break ... if COND'     
        !           844:      Set a breakpoint with condition COND; evaluate the expression
        !           845:      COND each time the breakpoint is reached, and stop only if the
        !           846:      value is nonzero.  `...' stands for one of the possible
        !           847:      arguments described above (or no argument) specifying where to break.
        !           848:      *Note Conditions::, for more information on breakpoint conditions.
        !           849:      
        !           850: `tbreak ARGS'     
        !           851:      Set a breakpoint enabled only for one stop.  ARGS are the
        !           852:      same as in the `break' command, and the breakpoint is set in the same
        !           853:      way, but the breakpoint is automatically "disabled" the first time it
        !           854:      is hit.
        !           855: 
        !           856: GDB allows you to set any number of breakpoints at the same place in the
        !           857: program.  There is nothing silly or meaningless about this.  When the
        !           858: breakpoints are conditional, this is even useful (*Note Conditions::).
        !           859: 
        !           860: 
        !           861: File: gdb  Node: Clear Breaks, Prev: Set Breaks, Up: Breakpoints, Next: Disabling
        !           862: 
        !           863: Clearing Breakpoints
        !           864: --------------------
        !           865: 
        !           866: It is often necessary to eliminate a breakpoint once it has done its job
        !           867: and you no longer want the program to stop there.  This is called
        !           868: "clearing" or `deleting' the breakpoint.  A breakpoint that
        !           869: has been cleared no longer exists in any sense.
        !           870: 
        !           871: With the `clear' command you can clear breakpoints according to where
        !           872: they are in the program.  With the `delete' command you can clear
        !           873: individual breakpoints by specifying their breakpoint numbers.
        !           874: 
        !           875: It is not necessary to clear a breakpoint to proceed past it.  GDB
        !           876: automatically ignores breakpoints in the first instruction to be executed
        !           877: when you continue execution at the same address where the program stopped.
        !           878: 
        !           879: `clear'     
        !           880:      Clear any breakpoints at the next instruction to be executed in the
        !           881:      selected stack frame (*Note Selection::).  When the innermost frame
        !           882:      is selected, this is a good way to clear a breakpoint that the program
        !           883:      just stopped at.
        !           884:      
        !           885: `clear FUNCTION'     
        !           886: `clear FILENAME:FUNCTION'     
        !           887:      Clear any breakpoints set at entry to the function FUNCTION.
        !           888:      
        !           889: `clear LINENUM'     
        !           890: `clear FILENAME:LINENUM'     
        !           891:      Clear any breakpoints set at or within the code of the specified line.
        !           892:      
        !           893: `delete BNUMS...'     
        !           894:      Delete the breakpoints of the numbers specified as arguments.
        !           895:      A breakpoint deleted is forgotten completely.
        !           896: 
        !           897: 
        !           898: File: gdb  Node: Disabling, Prev: Clear Breaks, Up: Breakpoints, Next: Conditions
        !           899: 
        !           900: Disabling Breakpoints
        !           901: ---------------------
        !           902: 
        !           903: Rather than clearing a breakpoint, you might prefer to "disable" it.
        !           904: This makes the breakpoint inoperative as if it had been cleared, but
        !           905: remembers the information on the breakpoint so that you can "enable"
        !           906: it again later.
        !           907: 
        !           908: You disable and enable breakpoints with the `enable' and
        !           909: `disable' commands, specifying one or more breakpoint numbers as
        !           910: arguments.  Use `info break' to print a list of breakpoints if you
        !           911: don't know which breakpoint numbers to use.
        !           912: 
        !           913: A breakpoint can have any of four different states of enablement:
        !           914: 
        !           915:    * Enabled.  The breakpoint will stop the program.  A breakpoint made
        !           916:      with the `break' command starts out in this state.
        !           917:    * Disabled.  The breakpoint has no effect on the program.
        !           918:    * Enabled once.  The breakpoint will stop the program, but
        !           919:      when it does so it will become disabled.  A breakpoint made
        !           920:      with the `tbreak' command starts out in this state.
        !           921:    * Enabled for deletion.  The breakpoint will stop the program, but
        !           922:      immediately after it does so it will be deleted permanently.
        !           923: 
        !           924: You change the state of enablement of a breakpoint with the following
        !           925: commands:
        !           926: 
        !           927: `disable BNUMS...'     
        !           928:      Disable the specified breakpoints.  A disabled breakpoint has no
        !           929:      effect but is not forgotten.  All options such as ignore-counts,
        !           930:      conditions and commands are remembered in case the breakpoint is
        !           931:      enabled again later.
        !           932:      
        !           933: `enable BNUMS...'     
        !           934:      Enable the specified breakpoints.  They become effective once again in
        !           935:      stopping the program, until you specify otherwise.
        !           936:      
        !           937: `enable once BNUMS...'     
        !           938:      Enable the specified breakpoints temporarily.  Each will be disabled
        !           939:      again the next time it stops the program (unless you have used one of
        !           940:      these commands to specify a different state before that time comes).
        !           941:      
        !           942: `enable delete BNUMS...'     
        !           943:      Enable the specified breakpoints to work once and then die.  Each of
        !           944:      the breakpoints will be deleted the next time it stops the program
        !           945:      (unless you have used one of these commands to specify a different
        !           946:      state before that time comes).
        !           947: 
        !           948: Aside from the automatic disablement or deletion of a breakpoint when it
        !           949: stops the program, which happens only in certain states, the state of
        !           950: enablement of a breakpoint changes only when one of the commands above
        !           951: is used.
        !           952: 
        !           953: 
        !           954: File: gdb  Node: Conditions, Prev: Disabling, Up: Breakpoints, Next: Break Commands
        !           955: 
        !           956: Break Conditions
        !           957: ----------------
        !           958: 
        !           959: The simplest sort of breakpoint breaks every time the program reaches a
        !           960: specified place.  You can also specify a "condition" for a breakpoint.
        !           961: A condition is just a boolean expression in your programming language.
        !           962: A breakpoint with a condition evaluates the expression each time the
        !           963: program reaches it, and the program stops only if the condition is true.
        !           964: 
        !           965: Break conditions may have side effects, and may even call functions in your
        !           966: program.  These may sound like strange things to do, but their effects are
        !           967: completely predictable unless there is another enabled breakpoint at the
        !           968: same address.  (In that case, GDB might see the other breakpoint first and
        !           969: stop the program without checking the condition of this one.)  Note that
        !           970: breakpoint commands are usually more convenient and flexible for the
        !           971: purpose of performing side effects when a breakpoint is reached
        !           972: (*Note Break Commands::).
        !           973: 
        !           974: Break conditions can be specified when a breakpoint is set, by using
        !           975: `if' in the arguments to the `break' command.  *Note Set Breaks::.
        !           976: They can also be changed at any time with the `condition' command:
        !           977: 
        !           978: `condition BNUM EXPRESSION'     
        !           979:      Specify EXPRESSION as the break condition for breakpoint number
        !           980:      BNUM.  From now on, this breakpoint will stop the program only if
        !           981:      the value of EXPRESSION is true (nonzero, in C).  EXPRESSION
        !           982:      is not evaluated at the time the `condition' command is given.
        !           983:      
        !           984: `condition BNUM'     
        !           985:      Remove the condition from breakpoint number BNUM.  It becomes
        !           986:      an ordinary unconditional breakpoint.
        !           987: 
        !           988: A special feature is provided for one kind of condition: to prevent the
        !           989: breakpoint from doing anything until it has been reached a certain number
        !           990: of times.  This is done with the "ignore count" of the breakpoint.
        !           991: When the program reaches a breakpoint whose ignore count is positive, then
        !           992: instead of stopping, it just decrements the ignore count by one and
        !           993: continues.
        !           994: 
        !           995: `ignore BNUM COUNT'     
        !           996:      Set the ignore count of breakpoint number BNUM to COUNT.
        !           997:      The next COUNT times the breakpoint is reached, it will not stop.
        !           998:      
        !           999:      To make the breakpoint stop the next time it is reached, specify
        !          1000:      a count of zero.
        !          1001:      
        !          1002: `cont COUNT'     
        !          1003:      Continue execution of the program, setting the ignore count of the
        !          1004:      breakpoint that the program stopped at to COUNT minus one.
        !          1005:      Continuing through the breakpoint does not itself count as one of
        !          1006:      COUNT.  Thus, the program will not stop at this breakpoint until the
        !          1007:      COUNT'th time it is hit.
        !          1008:      
        !          1009:      This command is allowed only when the program stopped due to a
        !          1010:      breakpoint.  At other times, the argument to `cont' is ignored.
        !          1011: 
        !          1012: If a breakpoint has a positive ignore count and a condition, the condition
        !          1013: is not checked.  Once the ignore count reaches zero, the condition will
        !          1014: start to be checked.
        !          1015: 
        !          1016: Note that you could achieve the effect of the ignore count with a condition
        !          1017: such as `$foo-- <= 0' using a debugger convenience variable that is
        !          1018: decremented each time.  That is why the ignore count is considered a
        !          1019: special case of a condition.  *Note Convenience Vars::.
        !          1020: 
        !          1021: 
        !          1022: File: gdb  Node: Break Commands, Prev: Conditions, Up: Breakpoints, Next: Error in Breakpoints
        !          1023: 
        !          1024: Commands Executed on Breaking
        !          1025: -----------------------------
        !          1026: 
        !          1027: You can give any breakpoint a series of commands to execute when the
        !          1028: program stops due to that breakpoint.  For example, you might want to
        !          1029: print the values of certain expressions, or enable other breakpoints.
        !          1030: 
        !          1031: `commands BNUM'     
        !          1032:      Specify commands for breakpoint number BNUM.  The commands
        !          1033:      themselves appear on the following lines.  Type a line containing just
        !          1034:      `end' to terminate the commands.
        !          1035:      
        !          1036:      To remove all commands from a breakpoint, use the command
        !          1037:      `commands' and follow it immediately by `end'; that is, give
        !          1038:      no commands.
        !          1039: 
        !          1040: It is possible for breakpoint commands to start the program up again.
        !          1041: Simply use the `cont' command, or `step', or any other command
        !          1042: to resume execution.  However, any remaining breakpoint commands are
        !          1043: ignored.  When the program stops again, GDB will act according to why
        !          1044: that stop took place.
        !          1045: 
        !          1046: If the first command specified is `silent', the usual message about
        !          1047: stopping at a breakpoint is not printed.  This may be desirable for
        !          1048: breakpoints that are to print a specific message and then continue.
        !          1049: If the remaining commands too print nothing, you will see no sign that
        !          1050: the breakpoint was reached at all.  `silent' is not really a command;
        !          1051: it is meaningful only at the beginning of the commands for a breakpoint.
        !          1052: 
        !          1053: The commands `echo' and `output' that allow you to print precisely
        !          1054: controlled output are often useful in silent breakpoints.  *Note Output::.
        !          1055: 
        !          1056: For example, here is how you could use breakpoint commands to print the
        !          1057: value of `x' at entry to `foo' whenever it is positive.  We
        !          1058: assume that the newly created breakpoint is number 4; `break' will
        !          1059: print the number that is assigned.
        !          1060: 
        !          1061:      break foo if x>0
        !          1062:      commands 4
        !          1063:      silent
        !          1064:      echo x is\040
        !          1065:      output x
        !          1066:      echo \n
        !          1067:      cont
        !          1068:      end
        !          1069: 
        !          1070: One application for breakpoint commands is to correct one bug so you can
        !          1071: test another.  Put a breakpoint just after the erroneous line of code, give
        !          1072: it a condition to detect the case in which something erroneous has been
        !          1073: done, and give it commands to assign correct values to any variables that
        !          1074: need them.  End with the `cont' command so that the program does not
        !          1075: stop, and start with the `silent' command so that no output is
        !          1076: produced.  Here is an example:
        !          1077: 
        !          1078:      break 403
        !          1079:      commands 5
        !          1080:      silent
        !          1081:      set x = y + 4
        !          1082:      cont
        !          1083:      end
        !          1084: 
        !          1085: One deficiency in the operation of automatically continuing breakpoints
        !          1086: under Unix appears when your program uses raw mode for the terminal.
        !          1087: GDB options back to its own terminal modes (not raw) before executing
        !          1088: commands, and then must switch back to raw mode when your program is
        !          1089: continued.  This causes any pending terminal input to be lost.
        !          1090: 
        !          1091: In the GNU system, this will be fixed by changing the behavior of
        !          1092: terminal modes.
        !          1093: 
        !          1094: Under Unix, when you have this problem, you might be able to get around
        !          1095: it by putting your actions into the breakpoint condition instead of
        !          1096: commands.  For example
        !          1097: 
        !          1098:      condition 5  (x = y + 4), 0
        !          1099: 
        !          1100: is a condition expression that will change `x' as needed, then always
        !          1101: have the value 0 so the program will not stop.  Loss of input is avoided
        !          1102: here because break conditions are evaluated without changing the terminal
        !          1103: modes.  When you want to have nontrivial conditions for performing the side
        !          1104: effects, the operators `&&', `||' and `? ... :' may be useful.
        !          1105: 
        !          1106: 
        !          1107: File: gdb  Node: Error in Breakpoints, Prev: Break Commands, Up: Breakpoints
        !          1108: 
        !          1109: "Cannot Insert Breakpoints" Error
        !          1110: ---------------------------------
        !          1111: 
        !          1112: Under Unix, breakpoints cannot be used in a program if any other process
        !          1113: is running that program.  Attempting to run or continue the program with
        !          1114: a breakpoint in this case will cause GDB to stop it.
        !          1115: 
        !          1116: When this happens, you have two ways to proceed:
        !          1117: 
        !          1118:   1. Remove or disable the breakpoints, then continue.
        !          1119:      
        !          1120:   2. Suspend GDB, and copy the file containing the program to a new name.
        !          1121:      Resume GDB and use the `exec-file' command to specify that GDB
        !          1122:      should run the program under that name.  Then start the program again.
        !          1123: 
        !          1124: 
        !          1125: File: gdb  Node: Continuing, Prev: Breakpoints, Up: Stopping, Next: Stepping
        !          1126: 
        !          1127: Continuing
        !          1128: ==========
        !          1129: 
        !          1130: After your program stops, most likely you will want it to run some more if
        !          1131: the bug you are looking for has not happened yet.
        !          1132: 
        !          1133: `cont'     
        !          1134:      Continue running the program at the place where it stopped.
        !          1135: 
        !          1136: If the program stopped at a breakpoint, the place to continue running
        !          1137: is the address of the breakpoint.  You might expect that continuing would
        !          1138: just stop at the same breakpoint immediately.  In fact, `cont'
        !          1139: takes special care to prevent that from happening.  You do not need
        !          1140: to clear the breakpoint to proceed through it after stopping at it.
        !          1141: 
        !          1142: You can, however, specify an ignore-count for the breakpoint that the
        !          1143: program stopped at, by means of an argument to the `cont' command.
        !          1144: *Note Conditions::.
        !          1145: 
        !          1146: If the program stopped because of a signal other than `SIGINT' or
        !          1147: `SIGTRAP', continuing will cause the program to see that signal.
        !          1148: You may not want this to happen.  For example, if the program stopped
        !          1149: due to some sort of memory reference error, you might store correct
        !          1150: values into the erroneous variables and continue, hoping to see more
        !          1151: execution; but the program would probably terminate immediately as
        !          1152: a result of the fatal signal once it sees the signal.  To prevent this,
        !          1153: you can continue with `signal 0'.  *Note Signaling::.  You can
        !          1154: also act in advance to prevent the program from seeing certain kinds
        !          1155: of signals, using the `handle' command (*Note Signals::).
        !          1156: 
        !          1157: 
        !          1158: File: gdb  Node: Stepping, Prev: Continuing, Up: Stopping
        !          1159: 
        !          1160: Stepping
        !          1161: ========
        !          1162: 
        !          1163: "Stepping" means setting your program in motion for a limited time, so
        !          1164: that control will return automatically to the debugger after one line of
        !          1165: code or one machine instruction.  Breakpoints are active during stepping
        !          1166: and the program will stop for them even if it has not gone as far as the
        !          1167: stepping command specifies.
        !          1168: 
        !          1169: `step'     
        !          1170:      Proceed the program until control reaches a different line, then stop
        !          1171:      it and return to the debugger.  This command is abbreviated `s'.
        !          1172:      
        !          1173: `step COUNT'     
        !          1174:      Proceed as in `step', but do so COUNT times.  If a breakpoint
        !          1175:      or a signal not related to stepping is reached before COUNT steps,
        !          1176:      stepping stops right away.
        !          1177:      
        !          1178: `next'     
        !          1179:      Similar to `step', but any function calls appearing within the line of
        !          1180:      code are executed without stopping.  Execution stops when control reaches a
        !          1181:      different line of code at the stack level which was executing when the
        !          1182:      `next' command was given.  This command is abbreviated `n'.
        !          1183:      
        !          1184:      An argument is a repeat count, as in `step'.
        !          1185:      
        !          1186: `finish'     
        !          1187:      Continue running until just after the selected stack frame returns
        !          1188:      (or until there is some other reason to stop, such as a fatal signal
        !          1189:      or a breakpoint).
        !          1190:      
        !          1191:      Contrast this with the `return' command (*Note Returning::).
        !          1192:      
        !          1193: `stepi'     
        !          1194: `si'     
        !          1195:      Proceed one machine instruction, then stop and return to the debugger.
        !          1196:      
        !          1197:      It is often useful to do `display/i $pc' when stepping by machine
        !          1198:      instructions.  This will cause the next instruction to be executed to
        !          1199:      be displayed automatically at each stop.  *Note Auto Display::.
        !          1200:      
        !          1201:      An argument is a repeat count, as in `step'.
        !          1202:      
        !          1203: `nexti'     
        !          1204: `ni'     
        !          1205:      Proceed one machine instruction, but if it is a subroutine call,
        !          1206:      proceed until the subroutine returns.
        !          1207:      
        !          1208:      An argument is a repeat count, as in `next'.
        !          1209: 
        !          1210: A typical technique for using stepping is to put a breakpoint
        !          1211: (*Note Breakpoints::) at the beginning of the function or the section of
        !          1212: the program in which a problem is believed to lie, and then step through
        !          1213: the suspect area, examining the variables that are interesting, until the
        !          1214: problem happens.
        !          1215: 
        !          1216: The `cont' command can be used after stepping to resume execution
        !          1217: until the next breakpoint or signal.
        !          1218: 
        !          1219: 

unix.superglobalmegacorp.com

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