If you are interested in information about types, or about how the
fields of a struct or a class are declared, use the ptype exp
command rather than print.
Refer to Chapter 15 Examining the Symbol Table.
10.1. Expressions
print and many other gdb commands accept an expression and
compute its value. Any kind of constant, variable or operator defined
by the programming language you are using is valid in an expression in
gdb. This includes conditional expressions, function calls,
casts, and string constants. It also includes preprocessor macros, if
you compiled your program to include this information; refer to Section 6.1 Compiling for debugging.
gdb supports array constants in expressions input by
the user. The syntax is {element, element…}. For example,
you can use the command print {1, 2, 3} to build up an array in
memory that is malloced in the target program.
Because C is so widespread, most of the expressions shown in examples in
this manual are in C.
Refer to Chapter 14 Using gdb with Different Languages, for information on how to use expressions in other
languages.
In this section, we discuss operators that you can use in gdb
expressions regardless of your programming language.
Casts are supported in all languages, not just in C, because it is so
useful to cast a number into a pointer in order to examine a structure
at that address in memory.
gdb supports these operators, in addition to those common
to programming languages:
- @
@ is a binary operator for treating parts of memory as arrays. Refer to Section 10.3 Artificial arrays, for more information.
- ::
:: allows you to specify a variable in terms of the file or
function where it is defined.
Refer to Section 10.2 Program variables.
- {type} addr
Refers to an object of type type stored at address addr in
memory. addr may be any expression whose value is an integer or
pointer (but parentheses are required around binary operators, just as in
a cast). This construct is allowed regardless of what kind of data is
normally supposed to reside at addr.