gdb.info: Convenience Vars

Go forward to Registers
Go backward to Value History
Go up to Data
Go to the top op gdb

Convenience variables

GDB provides "convenience variables" that you can use within GDB to
hold on to a value and refer to it later.  These variables exist
entirely within GDB; they are not part of your program, and setting a
convenience variable has no direct effect on further execution of your
program.  That is why you can use them freely.
   Convenience variables are prefixed with `$'.  Any name preceded by
`$' can be used for a convenience variable, unless it is one of the
predefined machine-specific register names (*note Registers:
Registers.).  (Value history references, in contrast, are _numbers_
preceded by `$'.  *Note Value history: Value History.)
   You can save a value in a convenience variable with an assignment
expression, 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'.
   One of the ways to use a convenience variable is 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 <RET>.
   Some convenience variables are created automatically by GDB and given
values likely to be useful.
`$_'
     The variable `$_' is automatically set by the `x' command to the
     last address examined (*note Examining memory: Memory.).  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.