6.2 Stacks Without frames
Some compilers provide a way to compile functions so that they operate without stack frames. (For example, the gcc option
generates functions without a frame.) This is occasionally done with heavily used library functions to save the frame setup time. GDB has limited facilities for dealing with these function invocations. If the innermost function invocation has no stack frame, GDB nevertheless regards it as though it had a separate frame, which is numbered zero as usual, allowing correct tracing of the function call chain. However, GDB has no provision for frameless functions elsewhere in the stack.
6.3 Commands for Examining the Stack
The following commands are used for examining the stack:
frame args | Select and print a stack frame. With no argument, prints the selected |
| stack frame. An argument specifies the frame to select. It can be a |
| stack frame number or the address of the frame. With argument, |
| nothing is printed if input is coming from a command file or a |
| |
The | |
| frame to another without printing the frame. This is the silent |
| version of frame. |
6.4 Backtraces
A backtrace is a report of the active stack frames instantiated by the execution of a program. It shows one line per frame, for all the active frames, starting with the currently executing frame (frame zero), followed by its caller (frame one), and on up the stack.
The following commands are used for backtrace:
backtrace, bt
backtrace n, bt n backtrace
Print a backtrace of the entire stack: one line per frame for all frames in the stack.
You can stop the backtrace at any time by typing the system interrupt character, normally
Similar, but print only the innermost n frames.
Similar, but print only the outermost n frames.
Print backtrace of all stack frames for a thread with stack pointer SP and program counter PC. This command is useful in cases where the debugger does not support a user thread package fully.
72 Examining the Stack