Go to the previous, next section.

Examining the Symbol Table

The commands described in this section allow you to inquire about the symbols (names of variables, functions and types) defined in your program. This information is inherent in the text of your program and does not change as your program executes. _GDBN__ finds it in your program's symbol table, in the file indicated when you started _GDBN__ (see section Choosing Files), or by one of the file-management commands (see section Commands to Specify Files).

Occasionally, you may need to refer to symbols that contain unusual characters, which _GDBN__ ordinarily treats as word delimiters. The most frequent case is in referring to static variables in other source files (see section Program Variables). File names are recorded in object files as debugging symbols, but _GDBN__ would ordinarily parse a typical file name, like `foo.c', as the three words `foo' `.' `c'. To allow _GDBN__ to recognize `foo.c' as a single symbol, enclose it in single quotes; for example,

p 'foo.c'::x

looks up the value of x in the scope of the file `foo.c'.

info address symbol
Describe where the data for symbol is stored. For a register variable, this says which register it is kept in. For a non-register local variable, this prints the stack-frame offset at which the variable is always stored.

Note the contrast with `print &symbol', which does not work at all for a register variables, and for a stack local variable prints the exact address of the current instantiation of the variable.

whatis exp
Print the data type of expression exp. exp is not actually evaluated, and any side-effecting operations (such as assignments or function calls) inside it do not take place. See section Expressions.

whatis
Print the data type of $, the last value in the value history.

ptype typename
Print a description of data type typename. typename may be the name of a type, or for C code it may have the form `struct struct-tag', `union union-tag' or `enum enum-tag'.

ptype exp
ptype
Print a description of the type of expression exp. ptype differs from whatis by printing a detailed description, instead of just the name of the type. For example, if your program declares a variable as

struct complex {double real; double imag;2 v;

compare the output of the two commands:

(_GDBP__) whatis v
type = struct complex
(_GDBP__) ptype v
type = struct complex {
    double real;
    double imag;
}

As with whatis, using ptype without an argument refers to the type of $, the last value in the value history.

info types regexp
info types
Print a brief description of all types whose name matches regexp (or all types in your program, if you supply no argument). Each complete typename is matched as though it were a complete line; thus, `i type value' gives information on all types in your program whose name includes the string value, but `i type ^value$' gives information only on types whose complete name is value.

This command differs from ptype in two ways: first, like whatis, it does not print a detailed description; second, it lists all source files where a type is defined.

info source
Show the name of the current source file--that is, the source file for the function containing the current point of execution--and the language it was written in.

info sources
Print the names of all source files in your program for which there is debugging information, organized into two lists: files whose symbols have already been read, and files whose symbols will be read when needed.

info functions
Print the names and data types of all defined functions.

info functions regexp
Print the names and data types of all defined functions whose names contain a match for regular expression regexp. Thus, `info fun step' finds all functions whose names include step; `info fun ^step' finds those whose names start with step.

info variables
Print the names and data types of all variables that are declared