Debugging with GDB: Selection

Next: Frame Info, Previous: Backtrace, Up: Stack [Contents][Index]

### 8.3 Selecting a Frame

Most commands for examining the stack and other data in your program work on whichever stack frame is selected at the moment. Here are the commands for selecting a stack frame; all of them finish by printing a brief description of the stack frame just selected.

`frame n`
`f n`

  Select frame number n. Recall that frame zero is the innermost (currently executing) frame, frame one is the frame that called the innermost one, and so on. The highest-numbered frame is the one for `main`.

`frame stack-addr [ pc-addr ]`
`f stack-addr [ pc-addr ]`

  Select the frame at address stack-addr. This is useful mainly if the chaining of stack frames has been damaged by a bug, making it impossible for GDB to assign numbers properly to all frames. In addition, this can be useful when your program has multiple stacks and switches between them. The optional pc-addr can also be given to specify the value of PC for the stack frame.

`up n`

  Move n frames up the stack; n defaults to 1. For positive numbers n, this advances toward the outermost frame, to higher frame numbers, to frames that have existed longer.

`down n`

  Move n frames down the stack; n defaults to 1. For positive numbers n, this advances toward the innermost frame, to lower frame numbers, to frames that were created more recently. You may abbreviate `down` as `do`.

All of these commands end by printing two lines of output describing the frame. The first line shows the frame number, the function name, the arguments, and the source file and line number of execution in that frame. The second line shows the text of that source line.

For example:

    (gdb) up
    #1  0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
        at env.c:10
    10              read_input_file (argv[i]);

After such a printout, the `list` command with no arguments prints ten lines centered on the point of execution in the frame. You can also edit the program at the point of execution with your favorite editing program by typing `edit`. See Printing Source Lines, for details.

`select-frame`

  The `select-frame` command is a variant of `frame` that does not display the new frame after selecting it. This command is intended primarily for use in GDB command scripts, where the output might be unnecessary and distracting.

`up-silently n`
`down-silently n`

  These two commands are variants of `up` and `down`, respectively; they differ in that they do their work silently, without causing display of the new frame. They are intended primarily for use in GDB command scripts, where the output might be unnecessary and distracting.

Next: Frame Info, Previous: Backtrace, Up: Stack [Contents][Index]