home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / gnu / gdb_18b.lzh / GDB.DOC next >
Text File  |  1993-07-23  |  114KB  |  2,845 lines

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