### 8.4 Information About a Frame

There are several other commands to print information about the selected stack frame.

`frame`
`f`

  When used without any argument, this command does not change which frame is selected, but prints a brief description of the currently selected stack frame. It can be abbreviated `f`. With an argument, this command is used to select a stack frame. See Selecting a Frame.

`info frame`
`info f`

  This command prints a verbose description of the selected stack frame, including:

  - the address of the frame
  - the address of the next frame down (called by this frame)
  - the address of the next frame up (caller of this frame)
  - the language in which the source code corresponding to this frame is written
  - the address of the frame’s arguments
  - the address of the frame’s local variables
  - the program counter saved in it (the address of execution in the caller frame)
  - which registers were saved in the frame

  The verbose description is useful when something has gone wrong that has made the stack format fail to fit the usual conventions.

`info frame [ frame-selection-spec ]`
`info f [ frame-selection-spec ]`

  Print a verbose description of the frame selected by frame-selection-spec. The frame-selection-spec is the same as for the `frame` command (see Selecting a Frame). The selected frame remains unchanged by this command.

`info args [-q]`

  Print the arguments of the selected frame, each on a separate line.

  The optional flag ‘`-q`’, which stands for ‘`quiet`’, disables printing header information and messages explaining why no argument have been printed.

`info args [-q] [-t type_regexp] [regexp]`

  Like `info args`, but only print the arguments selected with the provided regexp(s).

  If regexp is provided, print only the arguments whose names match the regular expression regexp.

  If type_regexp is provided, print only the arguments whose types, as printed by the `whatis` command, match the regular expression type_regexp. If type_regexp contains space(s), it should be enclosed in quote characters. If needed, use backslash to escape the meaning of special characters or quotes.

  If both regexp and type_regexp are provided, an argument is printed only if its name matches regexp and its type matches type_regexp.

`info locals [-q]`

  Print the local variables of the selected frame, each on a separate line. These are all variables (declared either static or automatic) accessible at the point of execution of the selected frame.

  The optional flag ‘`-q`’, which stands for ‘`quiet`’, disables printing header information and messages explaining why no local variables have been printed.

`info locals [-q] [-t type_regexp] [regexp]`

  Like `info locals`, but only print the local variables selected with the provided regexp(s).

  If regexp is provided, print only the local variables whose names match the regular expression regexp.

  If type_regexp is provided, print only the local variables whose types, as printed by the `whatis` command, match the regular expression type_regexp. If type_regexp contains space(s), it should be enclosed in quote characters. If needed, use backslash to escape the meaning of special characters or quotes.

  If both regexp and type_regexp are provided, a local variable is printed only if its name matches regexp and its type matches type_regexp.

  The command `info locals -q -t type_regexp` can usefully be combined with the commands `frame apply` and `thread apply`. For example, your program might use Resource Acquisition Is Initialization types (RAII) such as `lock_something_t`: each local variable of type `lock_something_t` automatically places a lock that is destroyed when the variable goes out of scope. You can then list all acquired locks in your program by doing

      thread apply all -s frame apply all -s info locals -q -t lock_something_t

  or the equivalent shorter form

      tfaas i lo -q -t lock_something_t