# GDB Call Stack **The call stack** is the chain of function calls that led to the current execution point. Navigating it helps you understand how you reached an error and inspect variables in each caller. ```bash (gdb) backtrace # show all stack frames (gdb) backtrace 10 # show last 10 frames (gdb) frame 0 # select innermost frame (current function) (gdb) frame 3 # select frame 3 (third caller up) (gdb) up # move to caller (gdb) down # move to callee (gdb) info frame # details of current frame (gdb) info locals # locals in current frame (gdb) info args # arguments to current frame ``` Backtrace prints the entire stack: frame 0 (current), frame 1 (its caller), frame 2 (caller's caller), etc. Each line shows the function name, source file, and line number. Frame numbering: frame 0 is innermost (where execution paused); higher numbers are older calls. `frame N` jumps directly to frame N. `up` and `down` navigate one step at a time—faster when you need to glance at one or two nearby frames. Once you select a frame with `frame N`, all commands operate in that frame's scope. `print x` shows `x` as it exists in that frame. `info locals` and `info args` show that frame's variables and arguments. `info frame` shows the current frame's details: memory addresses, return address, saved registers, etc.—useful for understanding the calling convention or debugging stack corruption. To debug a crash, run `backtrace` immediately—it shows the call chain that led to the crash. Select each frame to inspect its arguments and locals and understand what went wrong.