GDB can be thought of as a specialized programming language. It has variables and operators similar to those of C, and special features for debugging. This section looks at the different kinds of expressions that GDB understands.
Every time you print a value with
$. GDB reminds you of this by printing
val. For example:
gdb whizprog... (gdb)
print stopped_early$1 = 0 (gdb)
print whiny_users$2 = TRUE (gdb)
$ refers to the most recent value in the value history. This can save considerable typing. If you’ve just looked at a pointer variable, you can use:
to print the contents of whatever the pointer is pointing to.
$$ refers to the next most recent value in the history, and
n refers to the value n places from the end. (Thus,
n counts from the beginning, while
n counts from the end.)
You can use
show values to see the values in the history. Whenever GDB reloads the executable (rereads the symbol table), it clears the value history. This is because the value history may have contained pointers into the symbol table and such pointers become invalid when the symbol table is reloaded.
GDB lets you create convenience variables. These are variables you can use to store values as you need them. Their names begin with a
$ and consist of alphanumeric ...