Debugging with GDB (September 2007)
76 Debugging with GDB
Convenience variables are prefixed with ‘$’. Any name preceded by ‘$’ can be used for
a convenience variable, unless it is one of the predefined m achine-spec ific register names
(see Section 8.10 [Registers], page 77). (Value history references, in contrast, are numbers
preceded by ‘$’. See Section 8.8 [Value history], page 74.)
You can save a value in a convenience variable with an assignment e xpression, just as
you would set a variable in your program. For example:
set $foo = *object_ptr
would save in $foo the value contained in the object pointed to by object_ptr.
Using a convenience variable for the first time creates it, but its value is void until you
assign a new value. You can alter the value with another assignment at any time.
Convenience variables have no fixed types. You can assign a convenience variable any
type of value, including structures and arrays, even if that variable already has a value of
a different type. The convenience variable, when used as an expression, has the type of its
current value.
show convenience
Print a list of convenience variables used so far, and their values. Abbreviated
show conv.
A convenient variable can be use d as a counter to be incremented or a pointer to be
advanced. For example, to print a field from successive elements of an array of structures:
set $i = 0
print bar[$i++]->contents
Repeat that command by typing
h
RET
i
.
Some convenience variables are created automatically by GDB and assigned values.
$_ The variable $_ is automatically set by the x command to the last address
examined (see Section 8.5 [Examining memory], page 67). Other commands
which provide a default address for x to examine, also set $_ to that address.
These commands include info line and info breakpoint. The type of $_ is
void * except when set by the x command, in which case it is a pointer to the
type of $__.
$__ The variable $__ is automatically set by the x command to the value found in
the last address examined. Its type is chosen to match the format in which the
data was printed.
$_exitcode
The variable $_exitcode is automatically set to the exit code when the program
being debugged terminates.
On HP-UX systems, if you refer to a function or variable name that begins with a dollar
sign, GDB searches for a user or system name first, before it searches for a convenience
variable.