By default, gdb prints a value according to its data type. Sometimes this is not what you want. For example, you might want to print a number in hex, or a pointer in decimal. Or you might want to view data in memory at a certain address as a character string or as an instruction. To do these things, specify an output format when you print a value.
The simplest use of output formats is to say how to print a value
already computed. This is done by starting the arguments of the
print
command with a slash and a format letter. The format
letters supported are:
x
d
u
o
t
a
(gdb) p/a 0x54320 $3 = 0x54320 <_initialize_vx+396>
The command info symbol 0x54320
yields similar results.
See info symbol.
c
Without this format, gdb displays char
,
unsigned char
, and signed char
data as character
constants. Single-byte members of vectors are displayed as integer
data.
f
s
Without this format, gdb displays pointers to and arrays of
char
, unsigned char
, and signed char
as
strings. Single-byte members of a vector are displayed as an integer
array.
z
r
For example, to print the program counter in hex (see Registers), type
p/x $pc
Note that no space is required before the slash; this is because command names in gdb cannot contain a slash.
To reprint the last value in the value history with a different format,
you can use the print
command with just a format and no
expression. For example, ‘p/x’ reprints the last value in hex.
[1] ‘b’ cannot be used because these format letters are also
used with the x
command, where ‘b’ stands for “byte”;
see Examining Memory.