Expressions

The print command 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're using is valid in an expression in GDB. This includes conditional expressions, function calls, casts and string constants. It unfortunately doesn't include symbols defined by preprocessor #define commands.

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 malloc'd in the target program.

Because C is so widespread, most of the expressions shown in examples in this manual are in C. 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's 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:

@
Binary operator for treating parts of memory as arrays. See "Artificial arrays" for more information.
::
Lets you specify a variable in terms of the file or function where it's defined. See "Program variables."
{type} addr
Refers to an object of type type stored at address addr in memory. The 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.