8 Examining Data

The usual way to examine data in your program is with the print command (abbreviated p), or its synonym inspect. It evaluates and prints the value of an expression of the language your program is written in (see Chapter 9 (page 101)).

The following forms of print command are supported:

print expr, expr is an expression (in the source language). By default, the print /f expr value of expr is printed in a format appropriate to its data type;

you can choose a different format by specifying '/f', where f is a letter specifying the format; see “Output formats” (page 86).

print, print /f If you omit expr, GDB displays the last value again (from the value history; see “Value history” (page 95)). This allows you to conveniently inspect the same value in an alternative format.

A more low-level way of examining data is with the x command. It examines data in memory at a specified address and prints it in a specified format. See “Examining memory” (page 87).

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. See Chapter 10 (page 115).

8.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 unfortunately does not 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 calls malloc in the target program.

Because C is so widespread, most of the expressions shown in examples in this manual are in C. See Chapter 9 (page 101), 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 See “Artificial arrays” (page 85), for more information.

8.1 Expressions

83

Page 83
Image 83
HP gnu source-level debugger 5992-4701 manual Examining Data, Expressions, Following forms of print command are supported