Debugging with GDB (February 2008)

Table Of Contents
68 Debugging with GDB
g Giant words (eight bytes).
Each time you specify a unit size with x, that size becomes the default unit the
next time you use x. (For the s and i formats, the unit size is ignored and
is normally not written.)
addr, starting display address
addr is the address where you want GDB to begin displaying memory. The ex-
pression need not have a pointer value (though it may); it is always interpreted
as an integer address of a byte of memory. Refer to See Section 8.1 [Expres-
sions], page 63, for more information on expressions. The default for addr is
usually just after the last address examined—but several other commands also
set the default address: info breakpoints (to the address of the last break-
point listed), info line (to the starting address of a line), and print (if you
use it to display a value from memory).
For example, x/3uh 0x54320 is a request to display three halfwords (h) of memory,
formatted as unsigned decimal integers (‘u’), starting at address 0x54320. x/4xw $sp
prints the four words (‘w’) of memory above the stack pointer (here, $sp’; see Section 8.10
[Registers], page 77) in hexadecimal (‘x’).
Since the letters indicating unit sizes are all distinct from the letters specifying output
formats, you do not have to remember whether unit size or format comes first; either order
works. The output specifications 4xw and 4wx mean exactly the same thing. (However,
the count n must come first; wx4 does not work.)
Even though the unit size u is ignored for the formats ‘s’ and i’, you might still want to
use a count n; for example, 3i specifies that you want to see three machine instructions,
including any operands. The command disassemble gives an alternative way of inspecting
machine instructions; see Section 7.4 [Source and machine code], page 60.
All the defaults for the arguments to x are designed to make it easy to continue scanning
memory with minimal specifications each time you use x. For example, after you have
inspected three machine instructions with ‘x/3i addr ’, you can inspect the next seven with
just x/7’. If you use
h
RET
i
to repeat the x command, the repeat count n is used again; the
other arguments default as for successive uses of x.
The addresses and contents printed by the x command are not saved in the value history
because there is often too much of them and they would get in the way. Instead, GDB
makes these values available for subsequent use in expressions as values of the convenience
variables $_ and $__. After an x command, the last address examined is available for use
in expressions in the convenience variable $_. The contents of that address, as examined,
are available in the convenience variable $__.
If the x command has a repeat count, the address and contents saved are from the last
memory unit printed; this is not the same as the last address printed if several units were
printed on the last line of output.
8.6 Automatic display
If you find that you want to print the value of an expression frequently (to see how it
changes), you might want to add it to the automatic display list so that GDB prints its