Contents|Index|Previous|Next
Examining
memory
You
can use the x
command (for examine) to examine memory in any of several formats, independently
of your programs data types.
x/
nfu
addr
x
addr
x
Use the x
command to examine memory.
n,
f,
and u are
all optional parameters that specify how much memory to display and how
to format it; addr
is an expression
giving the address where you want to start displaying memory. If you use
defaults for nfu,
you need not type the slash, /.
Several commands set convenient defaults for addr.
n,
the repeat count
The repeat count is a decimal
integer; the default is 1. It specifies how much memory (counting by units,
u)
to display.
f,
the display format
The display format is one
of the formats used by print,s
(null-terminated string), or i
(machine instruction). The default is x
(hexadecimal) initially. The default changes each time you use either x
or print.
u,
the unit size
The unit size is any of
the following.
-
w
Words (four bytes). This
is the initial default.
-
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 expression
need not have a pointer value (though it may); it is always interpreted
as an integer address of a byte of memory. See Expressions
for more information on expressions. The default for addr is usually just
after the last address examinedbut several other commands also set the
default address: info
breakpoints (to
the address of the last breakpoint 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 Registers)
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 s
and i
formats, 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 Source
and machine code.
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 Return
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.
Top|Contents|Index|Previous|Next