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

1.1     ! root        1: Info file gdb, produced by texinfo-format-buffer   -*-Text-*-
        !             2: from file gdb.texinfo
        !             3: 
        !             4: This file documents the GNU debugger GDB.
        !             5: 
        !             6: Copyright (C) 1988 Free Software Foundation, Inc.
        !             7: 
        !             8: Permission is granted to make and distribute verbatim copies of
        !             9: this manual provided the copyright notice and this permission notice
        !            10: are preserved on all copies.
        !            11: 
        !            12: Permission is granted to copy and distribute modified versions of this
        !            13: manual under the conditions for verbatim copying, provided also that the
        !            14: sections entitled "Distribution" and "GDB General Public License" are
        !            15: included exactly as in the original, and provided that the entire resulting
        !            16: derived work is distributed under the terms of a permission notice
        !            17: identical to this one.
        !            18: 
        !            19: Permission is granted to copy and distribute translations of this manual
        !            20: into another language, under the above conditions for modified versions,
        !            21: except that the sections entitled "Distribution" and "GDB General Public
        !            22: License" may be included in a translation approved by the author instead
        !            23: of in the original English.
        !            24: 
        !            25: 
        !            26: 
        !            27: File: gdb  Node: Stack, Prev: Stopping, Up: Top, Next: Source
        !            28: 
        !            29: Examining the Stack
        !            30: *******************
        !            31: 
        !            32: When your program has stopped, the first thing you need to know is where it
        !            33: stopped and how it got there.
        !            34: 
        !            35: Each time your program performs a function call, the information about
        !            36: where in the program the call was made from is saved in a block of data
        !            37: called a "stack frame".  The frame also contains the arguments of the
        !            38: call and the local variables of the function that was called.  All the
        !            39: stack frames are allocated in a region of memory called the "call
        !            40: stack".
        !            41: 
        !            42: When your program stops, the GDB commands for examining the stack allow you
        !            43: to see all of this information.
        !            44: 
        !            45: One of the stack frames is "selected" by GDB and many GDB commands
        !            46: refer implicitly to the selected frame.  In particular, whenever you ask
        !            47: GDB for the value of a variable in the program, the value is found in the
        !            48: selected frame.  There are special GDB commands to select whichever frame
        !            49: you are interested in.
        !            50: 
        !            51: When the program stops, GDB automatically selects the currently executing
        !            52: frame and describes it briefly as the `frame' command does
        !            53: (*Note Info: Frame Info.).
        !            54: 
        !            55: * Menu:
        !            56: 
        !            57: * Frames::          Explanation of stack frames and terminology.
        !            58: * Backtrace::       Summarizing many frames at once.
        !            59: * Selection::       How to select a stack frame.
        !            60: * Info: Frame Info, Commands to print information on stack frames.
        !            61: 
        !            62: 
        !            63: File: gdb  Node: Frames, Prev: Stack, Up: Stack, Next: Backtrace
        !            64: 
        !            65: Stack Frames
        !            66: ============
        !            67: 
        !            68: The call stack is divided up into contiguous pieces called "frames";
        !            69: each frame is the data associated with one call to one function.  The frame
        !            70: contains the arguments given to the function, the function's local
        !            71: variables, and the address at which the function is executing.
        !            72: 
        !            73: When your program is started, the stack has only one frame, that of the
        !            74: function `main'.  This is called the "initial" frame or the
        !            75: "outermost" frame.  Each time a function is called, a new frame is
        !            76: made.  Each time a function returns, the frame for that function invocation
        !            77: is eliminated.  If a function is recursive, there can be many frames for
        !            78: the same function.  The frame for the function in which execution is
        !            79: actually occurring is called the "innermost" frame.  This is the most
        !            80: recently created of all the stack frames that still exist.
        !            81: 
        !            82: Inside your program, stack frames are identified by their addresses.  A
        !            83: stack frame consists of many bytes, each of which has its own address; each
        !            84: kind of computer has a convention for choosing one of those bytes whose
        !            85: address serves as the address of the frame.  Usually this address is kept
        !            86: in a register called the "frame pointer register" while execution is
        !            87: going on in that frame.
        !            88: 
        !            89: GDB assigns numbers to all existing stack frames, starting with zero for
        !            90: the innermost frame, one for the frame that called it, and so on upward.
        !            91: These numbers do not really exist in your program; they are to give you a
        !            92: way of talking about stack frames in GDB commands.
        !            93: 
        !            94: Many GDB commands refer implicitly to one stack frame.  GDB records a stack
        !            95: frame that is called the "selected" stack frame; you can select any
        !            96: frame using one set of GDB commands, and then other commands will operate
        !            97: on that frame.  When your program stops, GDB automatically selects the
        !            98: innermost frame.
        !            99: 
        !           100: 
        !           101: File: gdb  Node: Backtrace, Prev: Frames, Up: Stack, Next: Selection
        !           102: 
        !           103: Backtraces
        !           104: ==========
        !           105: 
        !           106: A backtrace is a summary of how the program got where it is.  It shows one
        !           107: line per frame, for many frames, starting with the currently executing
        !           108: frame (frame zero), followed by its caller (frame one), and on up the
        !           109: stack.
        !           110: 
        !           111: `backtrace'     
        !           112: `bt'     
        !           113:      Print a backtrace of the entire stack: one line per frame for all
        !           114:      frames in the stack.
        !           115:      
        !           116:      You can stop the backtrace at any time by typing the system interrupt
        !           117:      character, normally `Control-C'.
        !           118:      
        !           119: `backtrace N'     
        !           120: `bt N'     
        !           121:      Similar, but stop after N frames.
        !           122: 
        !           123: Each line in a backtrace shows the frame number, the program counter, the
        !           124: function and its arguments, and the source file name and line number (if
        !           125: known).  The program counter is omitted if is the beginning of the code for
        !           126: the source line.  This is the same as the first of the two lines printed
        !           127: when you select a frame.
        !           128: 
        !           129: 
        !           130: File: gdb  Node: Selection, Prev: Backtrace, Up: Stack, Next: Frame Info
        !           131: 
        !           132: Selecting a Frame
        !           133: =================
        !           134: 
        !           135: Most commands for examining the stack and other data in the program work on
        !           136: whichever stack frame is selected at the moment.  Here are the commands for
        !           137: selecting a stack frame; all of them finish by printing a brief description
        !           138: of the stack frame just selected.
        !           139: 
        !           140: `frame N'     
        !           141:      Select frame number N.  Recall that frame zero is the innermost
        !           142:      (currently executing) frame, frame one is the frame that called the
        !           143:      innermost one, and so on.  The highest-numbered frame is `main''s
        !           144:      frame.
        !           145:      
        !           146: `frame ADDR'     
        !           147:      Select the frame at address ADDR.  This is useful mainly if the
        !           148:      chaining of stack frames has been damaged by a bug, making it
        !           149:      impossible for GDB to assign numbers properly to all frames.  In
        !           150:      addition, this can be useful when the program has multiple stacks and
        !           151:      options between them.
        !           152:      
        !           153: `up N'     
        !           154:      Select the frame N frames up from the frame previously selected.
        !           155:      For positive numbers N, this advances toward the outermost
        !           156:      frame, to higher frame numbers, to frames that have existed longer.
        !           157:      N defaults to one.
        !           158:      
        !           159: `down N'     
        !           160:      Select the frame N frames down from the frame previously
        !           161:      selected.  For positive numbers N, this advances toward the
        !           162:      innermost frame, to lower frame numbers, to frames that were created
        !           163:      more recently.  N defaults to one.
        !           164: 
        !           165: All of these commands end by printing some information on the frame that
        !           166: has been selected: the frame number, the function name, the arguments, the
        !           167: source file and line number of execution in that frame, and the text of
        !           168: that source line.  For example:
        !           169: 
        !           170:      #3  main (argc=3, argv=??, env=??) at main.c, line 67
        !           171:      67        read_input_file (argv[i]);
        !           172: 
        !           173: After such a printout, the `list' command with no arguments will print
        !           174: ten lines centered on the point of execution in the frame.  *Note List::.
        !           175: 
        !           176: 
        !           177: File: gdb  Node: Frame Info, Prev: Selection, Up: Stack
        !           178: 
        !           179: Information on a Frame
        !           180: ======================
        !           181: 
        !           182: There are several other commands to print information about the selected
        !           183: stack frame.
        !           184: 
        !           185: `frame'     
        !           186:      This command prints a brief description of the selected stack frame.
        !           187:      It can be abbreviated `f'.  With an argument, this command is
        !           188:      used to select a stack frame; with no argument, it does not change
        !           189:      which frame is selected, but still prints the same information.
        !           190:      
        !           191: `info frame'     
        !           192:      This command prints a verbose description of the selected stack frame,
        !           193:      including the address of the frame, the addresses of the next frame in
        !           194:      (called by this frame) and the next frame out (caller of this frame),
        !           195:      the address of the frame's arguments, the program counter saved in it
        !           196:      (the address of execution in the caller frame), and which registers
        !           197:      were saved in the frame.  The verbose description is useful when
        !           198:      something has gone wrong that has made the stack format fail to fit
        !           199:      the usual conventions.
        !           200:      
        !           201: `info frame ADDR'     
        !           202:      Print a verbose description of the frame at address ADDR,
        !           203:      without selecting that frame.  The selected frame remains unchanged by
        !           204:      this command.
        !           205:      
        !           206: `info args'     
        !           207:      Print the arguments of the selected frame, each on a separate line.
        !           208:      
        !           209: `info locals'     
        !           210:      Print the local variables of the selected frame, each on a separate
        !           211:      line.  These are all variables declared static or automatic within all
        !           212:      program blocks that execution in this frame is currently inside of.
        !           213: 
        !           214: 
        !           215: File: gdb  Node: Source, Prev: Stack, Up: Top, Next: Data
        !           216: 
        !           217: Examining Source Files
        !           218: **********************
        !           219: 
        !           220: GDB knows which source files your program was compiled from, and
        !           221: can print parts of their text.  When your program stops, GDB
        !           222: spontaneously prints the line it stopped in.  Likewise, when you
        !           223: select a stack frame (*Note Selection::), GDB prints the line
        !           224: which execution in that frame has stopped in.  You can also
        !           225: print parts of source files by explicit command.
        !           226: 
        !           227: * Menu:
        !           228: 
        !           229: * List::        Using the `list' command to print source files.
        !           230: * Search::      Commands for searching source files.
        !           231: * Source Path:: Specifying the directories to search for source files.
        !           232: 
        !           233: 
        !           234: File: gdb  Node: List, Prev: Source, Up: Source, Next: Search
        !           235: 
        !           236: Printing Source Lines
        !           237: =====================
        !           238: 
        !           239: To print lines from a source file, use the `list' command
        !           240: (abbreviated `l').  There are several ways to specify what part
        !           241: of the file you want to print.
        !           242: 
        !           243: Here are the forms of `list' command most commonly used:
        !           244: 
        !           245: `list LINENUM'     
        !           246:      Print ten lines centered around line number LINENUM in the
        !           247:      current source file.
        !           248:      
        !           249: `list FUNCTION'     
        !           250:      Print ten lines centered around the beginning of function
        !           251:      FUNCTION.
        !           252:      
        !           253: `list'     
        !           254:      Print ten more lines.  If the last lines printed were printed with a
        !           255:      `list' command, this prints ten lines following the last lines
        !           256:      printed; however, if the last line printed was a solitary line printed
        !           257:      as part of displaying a stack frame (*Note Stack::), this prints ten
        !           258:      lines centered around that line.
        !           259:      
        !           260: `list -'     
        !           261:      Print ten lines just before the lines last printed.
        !           262: 
        !           263: Repeating a `list' command with RET discards the argument,
        !           264: so it is equivalent to typing just `list'.  This is more useful
        !           265: than listing the same lines again.  An exception is made for an
        !           266: argument of `-'; that argument is preserved in repetition so that
        !           267: each repetition moves up in the file.
        !           268: 
        !           269: In general, the `list' command expects you to supply zero, one or two
        !           270: "linespecs".  Linespecs specify source lines; there are several ways
        !           271: of writing them but the effect is always to specify some source line.
        !           272: Here is a complete description of the possible arguments for `list':
        !           273: 
        !           274: `list LINESPEC'     
        !           275:      Print ten lines centered around the line specified by LINESPEC.
        !           276:      
        !           277: `list FIRST,LAST'     
        !           278:      Print lines from FIRST to LAST.  Both arguments are
        !           279:      linespecs.
        !           280:      
        !           281: `list ,LAST'     
        !           282:      Print ten lines ending with LAST.
        !           283:      
        !           284: `list FIRST,'     
        !           285:      Print ten lines starting with FIRST.
        !           286:      
        !           287: `list +'     
        !           288:      Print ten lines just after the lines last printed.
        !           289:      
        !           290: `list -'     
        !           291:      Print ten lines just before the lines last printed.
        !           292:      
        !           293: `list'     
        !           294:      As described in the preceding table.
        !           295: 
        !           296: Here are the ways of specifying a single source line---all the
        !           297: kinds of linespec.
        !           298: 
        !           299: LINENUM     
        !           300:      Specifies line LINENUM of the current source file.
        !           301:      When a `list' command has two linespecs, this refers to
        !           302:      the same source file as the first linespec.
        !           303:      
        !           304: +OFFSET     
        !           305:      Specifies the line OFFSET lines after the last line printed.
        !           306:      When used as the second linespec in a `list' command that has
        !           307:      two, this specifies the line OFFSET lines down from the
        !           308:      first linespec.
        !           309:      
        !           310: -OFFSET     
        !           311:      Specifies the line OFFSET lines before the last line printed.
        !           312:      
        !           313: FILENAME:LINENUM     
        !           314:      Specifies line LINENUM in the source file FILENAME.
        !           315:      
        !           316: FUNCTION     
        !           317:      Specifies the line of the open-brace that begins the body of the
        !           318:      function FUNCTION.
        !           319:      
        !           320: FILENAME:FUNCTION     
        !           321:      Specifies the line of the open-brace that begins the body of the
        !           322:      function FUNCTION in the file FILENAME.  The file name is
        !           323:      needed with a function name only for disambiguation of identically
        !           324:      named functions in different source files.
        !           325:      
        !           326: *ADDRESS     
        !           327:      Specifies the line containing the program address ADDRESS.
        !           328:      ADDRESS may be any expression.
        !           329: 
        !           330: One other command is used to map source lines to program addresses.
        !           331: 
        !           332: `info line LINENUM'     
        !           333:      Print the starting and ending addresses of the compiled code for
        !           334:      source line LINENUM.
        !           335:      
        !           336:      The default examine address for the `x' command is changed to the
        !           337:      starting address of the line, so that `x/i' is sufficient to
        !           338:      begin examining the machine code (*Note Memory::).  Also, this address
        !           339:      is saved as the value of the convenience variable `$_'
        !           340:      (*Note Convenience Vars::).
        !           341: 
        !           342: 
        !           343: File: gdb  Node: Search, Prev: List, Up: Source, Next: Source Path
        !           344: 
        !           345: Searching Source Files
        !           346: ======================
        !           347: 
        !           348: There are two commands for searching through the current source file for a
        !           349: regular expression.
        !           350: 
        !           351: The command `forward-search REGEXP' checks each line, starting
        !           352: with the one following the last line listed, for a match for REGEXP.
        !           353: It lists the line that is found.  You can abbreviate the command name
        !           354: as `fo'.
        !           355: 
        !           356: The command `reverse-search REGEXP' checks each line, starting
        !           357: with the one before the last line listed and going backward, for a match
        !           358: for REGEXP.  It lists the line that is found.  You can abbreviate
        !           359: this command with as little as `rev'.
        !           360: 
        !           361: 
        !           362: File: gdb  Node: Source Path, Prev: Search, Up: Source
        !           363: 
        !           364: Specifying Source Directories
        !           365: =============================
        !           366: 
        !           367: Executable programs do not record the directories of the source files they
        !           368: were compiled from, just the names.  GDB remembers a list of directories to
        !           369: search for source files; this is called the "source path".  Each time
        !           370: GDB wants a source file, it tries all the directories in the list, in the
        !           371: order they are present in the list, until it finds a file with the desired
        !           372: name.
        !           373: 
        !           374: When you start GDB, its source path contains just the current working
        !           375: directory.  To add other directories, use the `directory' command.
        !           376: Note that the search path for executable files and the working directory
        !           377: are not used for finding source files.
        !           378: 
        !           379: `directory DIRNAME'     
        !           380:      Add directory DIRNAME to the end of the source path.
        !           381:      
        !           382: `directory'     
        !           383:      Reset the source path to just the current working directory of GDB.
        !           384:      This requires confirmation.
        !           385:      
        !           386:      `directory' with no argument can cause source files previously
        !           387:      found by GDB to be found in a different directory.  To make this work
        !           388:      correctly, this command also clears out the tables GDB maintains
        !           389:      about the source files it has already found.
        !           390:      
        !           391: `info directories'     
        !           392:      Print the source path: show which directories it contains.
        !           393: 
        !           394: Because the `directory' command adds to the end of the source path,
        !           395: it does not affect any file that GDB has already found.  If the source
        !           396: path contains directories that you do not want, and these directories
        !           397: contain misleading files with names matching your source files, the
        !           398: way to correct the situation is as follows:
        !           399: 
        !           400:   1. Choose the directory you want at the beginning of the source path.
        !           401:      Use the `cd' command to make that the current working directory.
        !           402:      
        !           403:   2. Use `directory' with no argument to reset the source path to just
        !           404:      that directory.
        !           405:      
        !           406:   3. Use `directory' with suitable arguments to add any other
        !           407:      directories you want in the source path.
        !           408: 
        !           409: 
        !           410: File: gdb  Node: Data, Prev: Source, Up: Top, Next: Symbols
        !           411: 
        !           412: Examining Data
        !           413: **************
        !           414: 
        !           415: The usual way of examining data in your program is with the `print'
        !           416: command (abbreviated `p').  It evaluates and prints the value of any
        !           417: valid expression of the language the program is written in (for now, C).
        !           418: You type
        !           419: 
        !           420:      print EXP
        !           421: 
        !           422: where EXP is any valid expression, and the value of EXP
        !           423: is printed in a format appropriate to its data type.
        !           424: 
        !           425: A more low-level way of examining data is with the `x' command.
        !           426: It examines data in memory at a specified address and prints it in a
        !           427: specified format.
        !           428: 
        !           429: * Menu:
        !           430: 
        !           431: * Expressions::      Expressions that can be computed and printed.
        !           432: * Variables::        Using your program's variables in expressions.
        !           433: * Assignment::       Setting your program's variables.
        !           434: * Arrays::           Examining part of memory as an array.
        !           435: * Formats::          Specifying formats for printing values.
        !           436: * Memory::           Examining memory explicitly.
        !           437: * Auto Display::     Printing certain expressions whenever program stops.
        !           438: * Value History::    Referring to values previously printed.
        !           439: * Convenience Vars:: Giving names to values for future reference.
        !           440: * Registers::        Referring to and storing in machine registers.
        !           441: 
        !           442: 
        !           443: File: gdb  Node: Expressions, Prev: Data, Up: Data, Next: Variables
        !           444: 
        !           445: Expressions
        !           446: ===========
        !           447: 
        !           448: Many different GDB commands accept an expression and compute its value.
        !           449: Any kind of constant, variable or operator defined by the programming
        !           450: language you are using is legal in an expression in GDB.  This includes
        !           451: conditional expressions, function calls, casts and string constants.
        !           452: 
        !           453: Casts are supported in all languages, not just in C, because it is so
        !           454: useful to cast a number into a pointer so as to examine a structure
        !           455: at that address in memory.
        !           456: 
        !           457: GDB supports three kinds of operator in addition to those of programming
        !           458: languages:
        !           459: 
        !           460: `@'     
        !           461:      `@' is a binary operator for treating parts of memory as arrays.
        !           462:      *Note Arrays::, for more information.
        !           463:      
        !           464: `::'     
        !           465:      `::' allows you to specify a variable in terms of the file or
        !           466:      function it is defined in.  *Note Variables::.
        !           467:      
        !           468: `{TYPE} ADDR'     
        !           469:      Refers to an object of type TYPE stored at address ADDR in memory.
        !           470:      ADDR may be any expression whose value is an integer or pointer (but
        !           471:      parentheses are required around nonunary operators, just as in a
        !           472:      cast).  This construct is allowed regardless of what kind of data is
        !           473:      officially supposed to reside at ADDR.
        !           474: 
        !           475: 
        !           476: File: gdb  Node: Variables, Prev: Expressions, Up: Data, Next: Arrays
        !           477: 
        !           478: Program Variables
        !           479: =================
        !           480: 
        !           481: The most common kind of expression to use is the name of a variable
        !           482: in your program.
        !           483: 
        !           484: Variables in expressions are understood in the selected stack frame
        !           485: (*Note Selection::); they must either be global (or static) or be visible
        !           486: according to the scope rules of the programming language from the point of
        !           487: execution in that frame.  This means that in the function
        !           488: 
        !           489:      foo (a)
        !           490:           int a;
        !           491:      {
        !           492:        bar (a);
        !           493:        {
        !           494:          int b = test ();
        !           495:          bar (b);
        !           496:        }
        !           497:      }
        !           498: 
        !           499: the variable `a' is usable whenever the program is executing
        !           500: within the function `foo', but the variable `b' is visible
        !           501: only while the program is executing inside the block in which `b'
        !           502: is declared.
        !           503: 
        !           504: 
        !           505: File: gdb  Node: Arrays, Prev: Variables, Up: Data, Next: Formats
        !           506: 
        !           507: Artificial Arrays
        !           508: =================
        !           509: 
        !           510: It is often useful to print out several successive objects of the
        !           511: same type in memory; a section of an array, or an array of
        !           512: dynamically determined size for which only a pointer exists in the
        !           513: program.
        !           514: 
        !           515: This can be done by constructing an "artificial array" with the
        !           516: binary operator `@'.  The left operand of `@' should be
        !           517: the first element of the desired array, as an individual object.
        !           518: The right operand should be the length of the array.  The result is
        !           519: an array value whose elements are all of the type of the left argument.
        !           520: The first element is actually the left argument; the second element
        !           521: comes from bytes of memory immediately following those that hold the
        !           522: first element, and so on.  Here is an example.  If a program says
        !           523: 
        !           524:      int *array = (int *) malloc (len * sizeof (int));
        !           525: 
        !           526: you can print the contents of `array' with
        !           527: 
        !           528:      p *array@len
        !           529: 
        !           530: The left operand of `@' must reside in memory.  Array values made
        !           531: with `@' in this way behave just like other arrays in terms of
        !           532: subscripting, and are coerced to pointers when used in expressions.
        !           533: (It would probably appear in an expression via the value history,
        !           534: after you had printed it out.)
        !           535: 
        !           536: 
        !           537: File: gdb  Node: Formats, Prev: Arrays, Up: Data, Next: Memory
        !           538: 
        !           539: Formats
        !           540: =======
        !           541: 
        !           542: GDB normally prints all values according to their data types.  Sometimes
        !           543: this is not what you want.  For example, you might want to print a number
        !           544: in hex, or a pointer in decimal.  Or you might want to view data in memory
        !           545: at a certain address as a character string or an instruction.  These things
        !           546: can be done with "output formats".
        !           547: 
        !           548: The simplest use of output formats is to say how to print a value
        !           549: already computed.  This is done by starting the arguments of the
        !           550: `print' command with a slash and a format letter.  The format
        !           551: letters supported are:
        !           552: 
        !           553: `x'     
        !           554:      Regard the bits of the value as an integer, and print the integer in
        !           555:      hexadecimal.
        !           556:      
        !           557: `d'     
        !           558:      Print as integer in signed decimal.
        !           559:      
        !           560: `u'     
        !           561:      Print as integer in unsigned decimal.
        !           562:      
        !           563: `o'     
        !           564:      Print as integer in octal.
        !           565:      
        !           566: `a'     
        !           567:      Print as an address, both absolute in hex and then relative
        !           568:      to a symbol defined as an address below it.
        !           569:      
        !           570: `c'     
        !           571:      Regard as an integer and print it as a character constant.
        !           572:      
        !           573: `f'     
        !           574:      Regard the bits of the value as a floating point number and print
        !           575:      using typical floating point syntax.
        !           576: 
        !           577: For example, to print the program counter in hex (*Note Registers::), type
        !           578: 
        !           579:      p/x $pc
        !           580: 
        !           581: Note that no space is required before the slash; this is because command
        !           582: names in GDB cannot contain a slash.
        !           583: 
        !           584: To reprint the last value in the value history with a different format,
        !           585: you can use the `print' command with just a format and no
        !           586: expression.  For example, `p/x' reprints the last value in hex.
        !           587: 
        !           588: 
        !           589: File: gdb  Node: Memory, Prev: Formats, Up: Data, Next: Auto Display
        !           590: 
        !           591: Examining Memory
        !           592: ----------------
        !           593: 
        !           594: The command `x' (for `examine') can be used to examine memory under
        !           595: explicit control of formats, without reference to the program's data types.
        !           596: 
        !           597: `x' is followed by a slash and an output format specification,
        !           598: followed by an expression for an address.  The expression need not have
        !           599: a pointer value (though it may); it is used as an integer, as the
        !           600: address of a byte of memory.
        !           601: 
        !           602: The output format in this case specifies both how big a unit of memory
        !           603: to examine and how to print the contents of that unit.  It is done
        !           604: with one or two of the following letters:
        !           605: 
        !           606: These letters specify just the size of unit to examine:
        !           607: 
        !           608: `b'     
        !           609:      Examine individual bytes.
        !           610:      
        !           611: `h'     
        !           612:      Examine halfwords (two bytes each).
        !           613:      
        !           614: `w'     
        !           615:      Examine words (four bytes each).
        !           616:      
        !           617:      Many assemblers and cpu designers still use `word' for a 16-bit quantity,
        !           618:      as a holdover from specific predecessor machines of the 1970's that really
        !           619:      did use two-byte words.  But more generally the term `word' has always
        !           620:      referred to the size of quantity that a machine normally operates on and
        !           621:      stores in its registers.  This is 32 bits for all the machines that GNU
        !           622:      runs on.
        !           623:      
        !           624: `g'     
        !           625:      Examine giant words (8 bytes).
        !           626: 
        !           627: These letters specify just the way to print the contents:
        !           628: 
        !           629: `x'     
        !           630:      Print as integers in unsigned hexadecimal.
        !           631:      
        !           632: `d'     
        !           633:      Print as integers in signed decimal.
        !           634:      
        !           635: `u'     
        !           636:      Print as integers in unsigned decimal.
        !           637:      
        !           638: `o'     
        !           639:      Print as integers in unsigned octal.
        !           640:      
        !           641: `a'     
        !           642:      Print as an address, both absolute in hex and then relative
        !           643:      to a symbol defined as an address below it.
        !           644:      
        !           645: `c'     
        !           646:      Print as character constants.
        !           647:      
        !           648: `f'     
        !           649:      Print as floating point.  This works only with sizes `w' and
        !           650:      `g'.
        !           651:      
        !           652: `s'     
        !           653:      Print a null-terminated string of characters.  The specified unit size
        !           654:      is ignored; instead, the unit is however many bytes it takes to reach
        !           655:      a null character (including the null character).
        !           656:      
        !           657: `i'     
        !           658:      Print a machine instruction in assembler syntax (or nearly).  The
        !           659:      specified unit size is ignored; the number of bytes in an instruction
        !           660:      varies depending on the type of machine, the opcode and the addressing
        !           661:      modes used.
        !           662: 
        !           663: If either the manner of printing or the size of unit fails to be specified,
        !           664: the default is to use the same one that was used last.  If you don't want
        !           665: to use any letters after the slash, you can omit the slash as well.
        !           666: 
        !           667: You can also omit the address to examine.  Then the address used is
        !           668: just after the last unit examined.  This is why string and instruction
        !           669: formats actually compute a unit-size based on the data: so that the
        !           670: next string or instruction examined will start in the right place.
        !           671: The `print' command sometimes sets the default address for
        !           672: the `x' command; when the value printed resides in memory, the
        !           673: default is set to examine the same location.  `info line' also
        !           674: sets the default for `x', to the address of the start of the
        !           675: machine code for the specified line and `info breakpoints' sets
        !           676: it to the address of the last breakpoint listed.
        !           677: 
        !           678: When you use RET to repeat an `x' command, it does not repeat
        !           679: exactly the same: the address specified previously (if any) is ignored, so
        !           680: that the repeated command examines the successive locations in memory
        !           681: rather than the same ones.
        !           682: 
        !           683: You can examine several consecutive units of memory with one command by
        !           684: writing a repeat-count after the slash (before the format letters, if any).
        !           685: The repeat count must be a decimal integer.  It has the same effect as
        !           686: repeating the `x' command that many times except that the output may
        !           687: be more compact with several units per line.
        !           688: 
        !           689:      x/10i $pc
        !           690: 
        !           691: Prints ten instructions starting with the one to be executed next in the
        !           692: selected frame.  After doing this, you could print another ten following
        !           693: instructions with
        !           694: 
        !           695:      x/10
        !           696: 
        !           697: in which the format and address are allowed to default.
        !           698: 
        !           699: The addresses and contents printed by the `x' command are not put in
        !           700: the value history because there is often too much of them and they would
        !           701: get in the way.  Instead, GDB makes these values available for subsequent
        !           702: use in expressions as values of the convenience variables `$_' and
        !           703: `$__'.
        !           704: 
        !           705: After an `x' command, the last address examined is available for use
        !           706: in expressions in the convenience variable `$_'.  The contents of that
        !           707: address, as examined, are available in the convenience variable `$__'.
        !           708: 
        !           709: If the `x' command has a repeat count, the address and contents saved
        !           710: are from the last memory unit printed; this is not the same as the last
        !           711: address printed if several units were printed on the last line of output.
        !           712: 
        !           713: 
        !           714: File: gdb  Node: Auto Display, Prev: Memory, Up: Data, Next: Value History
        !           715: 
        !           716: Automatic Display
        !           717: =================
        !           718: 
        !           719: If you find that you want to print the value of an expression frequently
        !           720: (to see how it changes), you might want to add it to the "automatic
        !           721: display list" so that GDB will print its value each time the program stops.
        !           722: Each expression added to the list is given a number to identify it;
        !           723: to remove an expression from the list, you specify that number.
        !           724: The automatic display looks like this:
        !           725: 
        !           726:      2: foo = 38
        !           727:      3: bar[5] = (struct hack *) 0x3804
        !           728: 
        !           729: showing item numbers, expressions and their current values.
        !           730: 
        !           731: `display EXP'     
        !           732:      Add the expression EXP to the list of expressions to display
        !           733:      each time the program stops.
        !           734:      
        !           735: `display/FMT EXP'     
        !           736:      For FMT specifying only a display format and not a size or
        !           737:      count, add the expression EXP to the auto-display list but
        !           738:      arranges to display it each time in the specified format FMT.
        !           739:      
        !           740: `display/FMT ADDR'     
        !           741:      For FMT `i' or `s', or including a unit-size or a
        !           742:      number of units, add the expression ADDR as a memory address to
        !           743:      be examined each time the program stops.  Examining means in effect
        !           744:      doing `x/FMT ADDR'.  *Note Memory::.
        !           745:      
        !           746: `undisplay N'     
        !           747:      Remove item number N from the list of expressions to display.
        !           748:      
        !           749: `display'     
        !           750:      Display the current values of the expressions on the list, just as is
        !           751:      done when the program stops.
        !           752:      
        !           753: `info display'     
        !           754:      Print the list of expressions to display automatically, each one
        !           755:      with its item number, but without showing the values.
        !           756: 
        !           757: 
        !           758: File: gdb  Node: Value History, Prev: Auto Display, Up: Data, Next: Convenience Vars
        !           759: 
        !           760: Value History
        !           761: =============
        !           762: 
        !           763: Every value printed by the `print' command is saved for the entire
        !           764: session in GDB's "value history" so that you can refer to it in
        !           765: other expressions.
        !           766: 
        !           767: The values printed are given "history numbers" for you to refer to them
        !           768: by.  These are successive integers starting with 1.  `print' shows you
        !           769: the history number assigned to a value by printing `$N = '
        !           770: before the value; here N is the history number.
        !           771: 
        !           772: To refer to any previous value, use `$' followed by the value's
        !           773: history number.  The output printed by `print' is designed to remind
        !           774: you of this.  Just `$' refers to the most recent value in the history,
        !           775: and `$$' refers to the value before that.
        !           776: 
        !           777: For example, suppose you have just printed a pointer to a structure and
        !           778: want to see the contents of the structure.  It suffices to type
        !           779: 
        !           780:      p *$
        !           781: 
        !           782: If you have a chain of structures where the component `next' points
        !           783: to the next one, you can print the contents of the next one with
        !           784: 
        !           785:      p *$.next
        !           786: 
        !           787: It might be useful to repeat this command many times by typing RET.
        !           788: 
        !           789: Note that the history records values, not expressions.  If the value of
        !           790: `x' is 4 and you type
        !           791: 
        !           792:      print x
        !           793:      set x=5
        !           794: 
        !           795: then the value recorded in the value history by the `print' command
        !           796: remains 4 even though `x''s value has changed.
        !           797: 
        !           798: `info history'     
        !           799:      Print the last ten values in the value history, with their item
        !           800:      numbers.  This is like `p $$9' repeated ten times, except that
        !           801:      `info history' does not change the history.
        !           802:      
        !           803: `info history N'     
        !           804:      Print ten history values centered on history item number N.
        !           805: 
        !           806: 
        !           807: File: gdb  Node: Convenience Vars, Prev: Value History, Up: Data, Next: Registers
        !           808: 
        !           809: Convenience Variables
        !           810: =====================
        !           811: 
        !           812: GDB provides "convenience variables" that you can use within GDB to
        !           813: hold on to a value and refer to it later.  These variables exist entirely
        !           814: within GDB; they are not part of your program, and setting a convenience
        !           815: variable has no effect on further execution of your program.  That's why
        !           816: you can use them freely.
        !           817: 
        !           818: Convenience variables have names starting with `$'.  Any name starting
        !           819: with `$' can be used for a convenience variable, unless it is one of
        !           820: the predefined set of register names (*Note Registers::).
        !           821: 
        !           822: You can save a value in a convenience variable with an assignment
        !           823: expression, just as you would set a variable in your program.  Example:
        !           824: 
        !           825:      set $foo = *object_ptr
        !           826: 
        !           827: would save in `$foo' the value contained in the object pointed to by
        !           828: `object_ptr'.
        !           829: 
        !           830: Using a convenience variable for the first time creates it; but its value
        !           831: is `void' until you assign a new value.  You can alter the value with
        !           832: another assignment at any time.
        !           833: 
        !           834: Convenience variables have no fixed types.  You can assign a convenience
        !           835: variable any type of value, even if it already has a value of a different
        !           836: type.  The convenience variable as an expression has whatever type its
        !           837: current value has.
        !           838: 
        !           839: `info convenience'     
        !           840:      Print a list of convenience variables used so far, and their values.
        !           841:      Abbreviated `i con'.
        !           842: 
        !           843: One of the ways to use a convenience variable is as a counter to be
        !           844: incremented or a pointer to be advanced.  For example:
        !           845: 
        !           846:      set $i = 0
        !           847:      print bar[$i++]->contents
        !           848:      ...repeat that command by typing RET.
        !           849: 
        !           850: Some convenience variables are created automatically by GDB and given
        !           851: values likely to be useful.
        !           852: 
        !           853: `$_'     
        !           854:      The variable `$_' is automatically set by the `x' command to
        !           855:      the last address examined (*Note Memory::).  Other commands which
        !           856:      provide a default address for `x' to examine also set `$_'
        !           857:      to that address; these commands include `info line' and `info
        !           858:      breakpoint'.
        !           859:      
        !           860: `$__'     
        !           861:      The variable `$__' is automatically set by the `x' command
        !           862:      to the value found in the last address examined.
        !           863: 
        !           864: 
        !           865: File: gdb  Node: Registers, Prev: Convenience Vars, Up: Data
        !           866: 
        !           867: Registers
        !           868: =========
        !           869: 
        !           870: Machine register contents can be referred to in expressions as variables
        !           871: with names starting with `$'.  The names of registers are different
        !           872: for each machine; use `info registers' to see the names used on your
        !           873: machine.  The names `$pc' and `$sp' are used on all machines for
        !           874: the program counter register and the stack pointer.  Often `$fp' is
        !           875: used for a register that contains a pointer to the current stack frame.
        !           876: 
        !           877: GDB always considers the contents of an ordinary register as an integer
        !           878: when the register is examined in this way.  Programs can store floating
        !           879: point values in registers also, but there is currently no GDB command
        !           880: to examine a specified register in floating point.  (However, if the
        !           881: variable in your program which is stored in the register is a floating
        !           882: point variable, you can see the floating point value by examining
        !           883: the variable.)
        !           884: 
        !           885: Some machines have special floating point registers.  GDB considers these
        !           886: registers' values as floating point when you examine them explicitly.
        !           887: 
        !           888: Some registers have distinct "raw" and "virtual" data formats.  This
        !           889: means that the data format in which the register contents are saved by the
        !           890: operating system is not the same one that your program normally sees.  For
        !           891: example, the registers of the 68881 floating point coprocessor are always
        !           892: saved in "extended" format, but all C programs expect to work with
        !           893: "double" format.  In such cases, GDB normally works with the virtual
        !           894: format only (the format that makes sense for your program), but the
        !           895: `info registers' command prints the data in both formats.
        !           896: 
        !           897: Register values are relative to the selected stack frame
        !           898: (*Note Selection::).  This means that you get the value that the register
        !           899: would contain if all stack frames farther in were exited and their saved
        !           900: registers restored.  In order to see the real contents of all registers,
        !           901: you must select the innermost frame (with `frame 0').
        !           902: 
        !           903: Some registers are never saved (typically those numbered zero or one)
        !           904: because they are used for returning function values; for these registers,
        !           905: relativization makes no difference.
        !           906: 
        !           907: `info registers'     
        !           908:      Print the names and relativized values of all registers.
        !           909:      
        !           910: `info registers REGNAME'     
        !           911:      Print the relativized value of register REGNAME.  REGNAME
        !           912:      may be any register name valid on the machine you are using, with
        !           913:      or without the initial `$'.
        !           914: 
        !           915: 
        !           916: Examples
        !           917: --------
        !           918: 
        !           919: You could print the program counter in hex with
        !           920: 
        !           921:      p/x $pc
        !           922: 
        !           923: or print the instruction to be executed next with
        !           924: 
        !           925:      x/i $pc
        !           926: 
        !           927: or add four to the stack pointer with
        !           928: 
        !           929:      set $sp += 4
        !           930: 
        !           931: The last is a way of removing one word from the stack, on machines where
        !           932: stacks grow downward in memory (most machines, nowadays).  This assumes
        !           933: that the innermost stack frame is selected.  Setting `$sp' is
        !           934: not allowed when other stack frames are selected.
        !           935: 
        !           936: 
        !           937: File: gdb  Node: Symbols, Prev: Data, Up: Top, Next: Altering
        !           938: 
        !           939: Examining the Symbol Table
        !           940: **************************
        !           941: 
        !           942: The commands described in this section allow you to make inquiries for
        !           943: information about the symbols (names of variables, functions and types)
        !           944: defined in your program.  This information is found by GDB in the symbol
        !           945: table loaded by the `symbol-file' command; it is inherent in the text
        !           946: of your program and does not change as the program executes.
        !           947: 
        !           948: `whatis EXP'     
        !           949:      Print the data type of expression EXP.  EXP is not
        !           950:      actually evaluated, and any side-effecting operations (such as
        !           951:      assignments or function calls) inside it do not take place.
        !           952:      
        !           953: `whatis'     
        !           954:      Print the data type of `$', the last value in the value history.
        !           955:      
        !           956: `info address SYMBOL'     
        !           957:      Describe where the data for SYMBOL is stored.  For register
        !           958:      variables, this says which register.  For other automatic variables,
        !           959:      this prints the stack-frame offset at which the variable is always
        !           960:      stored.  Note the contrast with `print &SYMBOL', which does
        !           961:      not work at all for register variables and for automatic variables
        !           962:      prints the exact address of the current instantiation of the variable.
        !           963:      
        !           964: `ptype TYPENAME'     
        !           965:      Print a description of data type TYPENAME.  TYPENAME may be the name
        !           966:      of a type, or for C code it may have the form `struct STRUCT-TAG',
        !           967:      `union UNION-TAG' or `enum ENUM-TAG'.
        !           968:      
        !           969: `info sources'     
        !           970:      Print the names of all source files in the program for which there
        !           971:      is debugging information.
        !           972:      
        !           973: `info functions'     
        !           974:      Print the names and data types of all defined functions.
        !           975:      
        !           976: `info functions REGEXP'     
        !           977:      Print the names and data types of all defined functions
        !           978:      whose names contain a match for regular expression REGEXP.
        !           979:      Thus, `info fun step' finds all functions whose names
        !           980:      include `step'; `info fun ^step' finds those whose names
        !           981:      start with `step'.
        !           982:      
        !           983: `info variables'     
        !           984:      Print the names and data types of all variables that are declared
        !           985:      outside of functions.
        !           986:      
        !           987: `info variables REGEXP'     
        !           988:      Print the names and data types of all variables, declared outside of
        !           989:      functions, whose names contain a match for regular expression
        !           990:      REGEXP.
        !           991:      
        !           992: `info types'     
        !           993:      Print all data types that are defined in the program.
        !           994:      
        !           995: `info types REGEXP'     
        !           996:      Print all data types that are defined in the program whose names
        !           997:      contain a match for regular expression REGEXP.
        !           998:      
        !           999: `printsyms FILENAME'     
        !          1000:      Write a complete dump of the debugger's symbol data into the
        !          1001:      file FILENAME.
        !          1002: 
        !          1003: 
        !          1004: File: gdb  Node: Altering, Prev: Symbols, Up: Top, Next: Sequences
        !          1005: 
        !          1006: Altering Execution
        !          1007: ******************
        !          1008: 
        !          1009: There are several ways to alter the execution of your program with GDB
        !          1010: commands.
        !          1011: 
        !          1012: * Menu:
        !          1013: 
        !          1014: * Assignment::    Altering variable values or memory contents.
        !          1015: * Jumping::       Altering control flow.
        !          1016: * Signaling::     Making signals happen in the program.
        !          1017: * Returning::     Making a function return prematurely.
        !          1018: 
        !          1019: 
        !          1020: File: gdb  Node: Assignment, Prev: Altering, Up: Altering, Next: Jumping
        !          1021: 
        !          1022: Assignment to Variables
        !          1023: =======================
        !          1024: 
        !          1025: To alter the value of a variable, evaluate an assignment expression.
        !          1026: For example,
        !          1027: 
        !          1028:      print x=4
        !          1029: 
        !          1030: would store the value 4 into the variable `x', and then print
        !          1031: the value of the assignment expression (which is 4).
        !          1032: 
        !          1033: If you are not interested in seeing the value of the assignment, use the
        !          1034: `set' command instead of the `print' command.  `set' is
        !          1035: really the same as `print' except that the expression's value is not
        !          1036: printed and is not put in the value history (*Note Value History::).  The
        !          1037: expression is evaluated only for side effects.
        !          1038: 
        !          1039: GDB allows more implicit conversions in assignments than C does; you can
        !          1040: freely store an integer value into a pointer variable or vice versa, and
        !          1041: any structure can be converted to any other structure that is the same
        !          1042: length or shorter.
        !          1043: 
        !          1044: In C, all the other assignment operators such as `+=' and `++'
        !          1045: are supported as well.
        !          1046: 
        !          1047: To store into arbitrary places in memory, use the `{...}'
        !          1048: construct to generate a value of specified type at a specified address
        !          1049: (*Note Expressions::).  For example,
        !          1050: 
        !          1051:      set {int}0x83040 = 4
        !          1052: 
        !          1053: 
        !          1054: File: gdb  Node: Jumping, Prev: Assignment, Up: Altering, Next: Signaling
        !          1055: 
        !          1056: Continuing at a Different Address
        !          1057: =================================
        !          1058: 
        !          1059: `jump LINENUM'     
        !          1060:      Resume execution at line number LINENUM.  Execution may stop
        !          1061:      immediately if there is a breakpoint there.
        !          1062:      
        !          1063:      The `jump' command does not change the current stack frame, or
        !          1064:      the stack pointer, or the contents of any memory location or any
        !          1065:      register other than the program counter.  If line LINENUM is in
        !          1066:      a different function from the one currently executing, the results may
        !          1067:      be wild if the two functions expect different patterns of arguments or
        !          1068:      of local variables.  For his reason, the `jump' command requests
        !          1069:      confirmation if the specified line is not in the function currently
        !          1070:      executing.  However, even wild results are predictable based on
        !          1071:      changing the program counter.
        !          1072:      
        !          1073: `jump *ADDRESS'     
        !          1074:      Resume execution at the instruction at address ADDRESS.
        !          1075: 
        !          1076: A similar effect can be obtained by storing a new value into the register
        !          1077: `$pc', but not exactly the same.
        !          1078: 
        !          1079:      set $pc = 0x485
        !          1080: 
        !          1081: specifies the address at which execution will resume, but does not resume
        !          1082: execution.  That does not happen until you use the `cont' command or a
        !          1083: stepping command (*Note Stepping::).
        !          1084: 
        !          1085: 
        !          1086: File: gdb  Node: Signaling, Prev: Jumping, Up: Altering, Next: Returning
        !          1087: 
        !          1088: Giving the Program a Signal
        !          1089: ===========================
        !          1090: 
        !          1091: `signal SIGNALNUM'     
        !          1092:      Resume execution where the program stopped, but give it immediately
        !          1093:      the signal number SIGNALNUM.
        !          1094:      
        !          1095:      Alternatively, if SIGNALNUM is zero, continue execution and give
        !          1096:      no signal.  This may be useful when the program has received a signal
        !          1097:      and the `cont' command would allow the program to see that
        !          1098:      signal.
        !          1099: 
        !          1100: 
        !          1101: File: gdb  Node: Returning, Prev: Signaling, Up: Altering
        !          1102: 
        !          1103: Returning from a Function
        !          1104: =========================
        !          1105: 
        !          1106: You can make any function call return immediately, using the `return'
        !          1107: command.
        !          1108: 
        !          1109: First select the stack frame that you wish to return from
        !          1110: (*Note Selection::).  Then type the `return' command.  If you wish to
        !          1111: specify the value to be returned, give that as an argument.
        !          1112: 
        !          1113: This pops the selected stack frame (and any other frames inside of it),
        !          1114: leaving its caller as the innermost remaining frame.  That frame becomes
        !          1115: selected.  The specified value is stored in the registers used for
        !          1116: returning values of functions.
        !          1117: 
        !          1118: The `return' command does not resume execution; it leaves the program
        !          1119: stopped in the state that would exist if the function had just returned.
        !          1120: Contrast this with the `finish' command (*Note Stepping::), which
        !          1121: resumes execution until the selected stack frame returns naturally.
        !          1122: 
        !          1123: 
        !          1124: File: gdb  Node: Sequences, Prev: Altering, Up: Top, Next: Emacs
        !          1125: 
        !          1126: Canned Sequences of Commands
        !          1127: ****************************
        !          1128: 
        !          1129: GDB provides two ways to store sequences of commands for execution as a
        !          1130: unit: user-defined commands and command files.
        !          1131: 
        !          1132: * Menu:
        !          1133: 
        !          1134: * Define::         User-defined commands.
        !          1135: * Command Files::  Command files.
        !          1136: * Output::         Controlled output commands useful in
        !          1137:                    user-defined commands and command files.
        !          1138: 
        !          1139: 
        !          1140: File: gdb  Node: Define, Prev: Sequences, Up: Sequences, Next: Command Files
        !          1141: 
        !          1142: User-Defined Commands
        !          1143: =====================
        !          1144: 
        !          1145: A "user-defined command" is a sequence of GDB commands to which you
        !          1146: assign a new name as a command.  This is done with the `define'
        !          1147: command.
        !          1148: 
        !          1149: `define COMMANDNAME'     
        !          1150:      Define a command named COMMANDNAME.  If there is already a command
        !          1151:      by that name, you are asked to confirm that you want to redefine it.
        !          1152:      
        !          1153:      The definition of the command is made up of other GDB command lines,
        !          1154:      which are given following the `define' command.  The end of these
        !          1155:      commands is marked by a line containing `end'.
        !          1156:      
        !          1157: `document COMMANDNAME'     
        !          1158:      Give documentation to the user-defined command COMMANDNAME.  The
        !          1159:      command COMMANDNAME must already be defined.  This command reads
        !          1160:      lines of documentation just as `define' reads the lines of the
        !          1161:      command definition.  After the `document' command is finished,
        !          1162:      `help' on command COMMANDNAME will print the documentation
        !          1163:      you have specified.
        !          1164:      
        !          1165:      You may use the `document' command again to change the
        !          1166:      documentation of a command.  Redefining the command with `define'
        !          1167:      does not change the documentation.
        !          1168: 
        !          1169: User-defined commands do not take arguments.  When they are executed, the
        !          1170: commands of the definition are not printed.  An error in any command
        !          1171: stops execution of the user-defined command.
        !          1172: 
        !          1173: Commands that would ask for confirmation if used interactively proceed
        !          1174: without asking when used inside a user-defined command.  Many GDB commands
        !          1175: that normally print messages to say what they are doing omit the messages
        !          1176: when used in user-defined command.
        !          1177: 
        !          1178: 
        !          1179: File: gdb  Node: Command Files, Prev: Define, Up: Sequences, Next: Output
        !          1180: 
        !          1181: Command Files
        !          1182: =============
        !          1183: 
        !          1184: A command file for GDB is a file of lines that are GDB commands.  Comments
        !          1185: (lines starting with `#') may also be included.  An empty line in a
        !          1186: command file does nothing; it does not mean to repeat the last command, as
        !          1187: it would from the terminal.
        !          1188: 
        !          1189: When GDB starts, it automatically executes its "init files", command
        !          1190: files named `.gdbinit'.  GDB reads the init file (if any) in your home
        !          1191: directory and then the init file (if any) in the current working
        !          1192: directory.  (The init files are not executed if the `-nx' option
        !          1193: is given.)  You can also request the execution of a command file with the
        !          1194: `source' command:
        !          1195: 
        !          1196: `source FILENAME'     
        !          1197:      Execute the command file FILENAME.
        !          1198: 
        !          1199: The lines in a command file are executed sequentially.  They are not
        !          1200: printed as they are executed.  An error in any command terminates execution
        !          1201: of the command file.
        !          1202: 
        !          1203: Commands that would ask for confirmation if used interactively proceed
        !          1204: without asking when used in a command file.  Many GDB commands that
        !          1205: normally print messages to say what they are doing omit the messages
        !          1206: when used in a command file.
        !          1207: 
        !          1208: 
        !          1209: File: gdb  Node: Output, Prev: Command Files, Up: Sequences
        !          1210: 
        !          1211: Commands for Controlled Output
        !          1212: ==============================
        !          1213: 
        !          1214: During the execution of a command file or a user-defined command, the only
        !          1215: output that appears is what is explicitly printed by the commands of the
        !          1216: definition.  This section describes three commands useful for generating
        !          1217: exactly the output you want.
        !          1218: 
        !          1219: `echo TEXT'     
        !          1220:      Print TEXT.  Nonprinting characters can be included in
        !          1221:      TEXT using C escape sequences, such as `\n' to print a
        !          1222:      newline.  No newline will be printed unless you specify one.
        !          1223:      
        !          1224:      A backslash at the end of TEXT is ignored.  It is useful for
        !          1225:      outputting a string ending in spaces, since trailing spaces are
        !          1226:      trimmed from all arguments.  A backslash at the beginning preserves
        !          1227:      leading spaces in the same way, because `\ ' as an escape
        !          1228:      sequence stands for a space.  Thus, to print ` and foo = ', do
        !          1229:      
        !          1230:           echo \ and foo = \
        !          1231:      
        !          1232: `output EXPRESSION'     
        !          1233:      Print the value of EXPRESSION and nothing but that value: no
        !          1234:      newlines, no `$NN = '.  The value is not entered in the
        !          1235:      value history either.
        !          1236:      
        !          1237: `output/FMT EXPRESSION'     
        !          1238:      Print the value of EXPRESSION in format FMT.
        !          1239:      *Note Formats::, for more information.
        !          1240:      
        !          1241: `printf STRING, EXPRESSIONS...'     
        !          1242:      Print the values of the EXPRESSIONS under the control of
        !          1243:      STRING.  The EXPRESSIONS are separated by commas and may
        !          1244:      be either numbers or pointers.  Their values are printed as specified
        !          1245:      by STRING, exactly as if the program were to execute
        !          1246:      
        !          1247:           printf (STRING, EXPRESSIONS...);
        !          1248:      
        !          1249:      For example, you can print two values in hex like this:
        !          1250:      
        !          1251:           printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
        !          1252:      
        !          1253:      The only backslash-escape sequences that you can use in the string are
        !          1254:      the simple ones that consist of backslash followed by a letter.
        !          1255: 
        !          1256: 
        !          1257: File: gdb  Node: Emacs, Prev: Sequences, Up: Top, Next: Remote
        !          1258: 
        !          1259: Using GDB under GNU Emacs
        !          1260: *************************
        !          1261: 
        !          1262: A special interface allows you to use GNU Emacs to view (and
        !          1263: edit) the source files for the program you are debugging with
        !          1264: GDB.
        !          1265: 
        !          1266: To use this interface, use the command `M-x gdb' in Emacs.
        !          1267: Give the executable file you want to debug as an argument.  This
        !          1268: command starts a GDB process as a subprocess of Emacs, with input
        !          1269: and output through a newly created Emacs buffer.
        !          1270: 
        !          1271: Using this GDB process is just like using GDB normally except for two things:
        !          1272: 
        !          1273:    * All "terminal" input and output goes through the Emacs buffer.  This
        !          1274:      applies both to GDB commands and their output, and to the input and
        !          1275:      output done by the program you are debugging.
        !          1276:      
        !          1277:      This is useful because it means that you can copy the text of previous
        !          1278:      commands and input them again; you can even use parts of the output
        !          1279:      in this way.
        !          1280:      
        !          1281:      All the facilities of Emacs's Shell mode are available for this purpose.
        !          1282:      
        !          1283:    * GDB displays source code through Emacs.  Each time GDB displays a
        !          1284:      stack frame, Emacs automatically finds the source file for that frame
        !          1285:      and puts an arrow (`=>') at the left margin of the current line.
        !          1286:      
        !          1287:      Explicit GDB `list' or search commands still produce output as
        !          1288:      usual, but you probably will have no reason to use them.
        !          1289: 
        !          1290: In the GDB I/O buffer, you can use these special Emacs commands:
        !          1291: 
        !          1292: `M-s'     
        !          1293:      Execute to another source line, like the GDB `step' command.
        !          1294:      
        !          1295: `M-n'     
        !          1296:      Execute to next source line in this function, skipping all function
        !          1297:      calls, like the GDB `next' command.
        !          1298:      
        !          1299: `M-i'     
        !          1300:      Execute one instruction, like the GDB `stepi' command.
        !          1301:      
        !          1302: `M-u'     
        !          1303:      Move up one stack frame (and display that frame's source file in
        !          1304:      Emacs), like the GDB `up' command.
        !          1305:      
        !          1306: `M-d'     
        !          1307:      Move down one stack frame (and display that frame's source file in
        !          1308:      Emacs), like the GDB `down' command.  (This means that you cannot
        !          1309:      delete words in the usual fashion in the GDB buffer; I am guessing you
        !          1310:      won't often want to do that.)
        !          1311:      
        !          1312: `C-c C-f'     
        !          1313:      Execute until exit from the selected stack frame, like the GDB
        !          1314:      `finish' command.
        !          1315: 
        !          1316: In any source file, the Emacs command `C-x SPC' (`gdb-break')
        !          1317: tells GDB to set a breakpoint on the source line point is on.
        !          1318: 
        !          1319: The source files displayed in Emacs are in ordinary Emacs buffers
        !          1320: which are visiting the source files in the usual way.  You can edit
        !          1321: the files with these buffers if you wish; but keep in mind that GDB
        !          1322: communicates with Emacs in terms of line numbers.  If you add or
        !          1323: delete lines from the text, the line numbers that GDB knows will cease
        !          1324: to correspond properly to the code.
        !          1325: 
        !          1326: 
        !          1327: File: gdb  Node: Remote, Prev: Emacs, Up: Top, Next: Commands
        !          1328: 
        !          1329: Remote Kernel Debugging
        !          1330: ***********************
        !          1331: 
        !          1332: GDB has a special facility for debugging a remote machine via a serial
        !          1333: connection.  This can be used for kernel debugging.
        !          1334: 
        !          1335: The program to be debugged on the remote machine needs to contain a
        !          1336: debugging device driver which talks to GDB over the serial line using the
        !          1337: protocol described below.  The same version of GDB that is used ordinarily
        !          1338: can be used for this.
        !          1339: 
        !          1340: * Menu:
        !          1341: 
        !          1342: * Remote Commands::       Commands used to start and finish remote debugging.
        !          1343: 
        !          1344: For details of the communication protocol, see the comments in the GDB
        !          1345: source file `remote.c'.
        !          1346: 
        !          1347: 
        !          1348: File: gdb  Node: Remote Commands, Prev: Remote, Up: Remote
        !          1349: 
        !          1350: Commands for Remote Debugging
        !          1351: =============================
        !          1352: 
        !          1353: To start remote debugging, first run GDB and specify as an executable file
        !          1354: the program that is running in the remote machine.  This tells GDB how
        !          1355: to find the program's symbols and the contents of its pure text.  Then
        !          1356: establish communication using the `attach' command with a device
        !          1357: name rather than a pid as an argument.  For example:
        !          1358: 
        !          1359:      attach /dev/ttyd
        !          1360: 
        !          1361: if the serial line is connected to the device named `/dev/ttyd'.  This
        !          1362: will stop the remote machine if it is not already stopped.
        !          1363: 
        !          1364: Now you can use all the usual commands to examine and change data and to
        !          1365: step and continue the remote program.
        !          1366: 
        !          1367: To resume the remote program and stop debugging it, use the `detach'
        !          1368: command.
        !          1369: 
        !          1370: 

unix.superglobalmegacorp.com

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