The names where and info stack (abbreviated info s) are additional aliases for backtrace.

Each line in the backtrace shows the frame number and the function name. The program counter value is also shown―unless you use set print address off. The backtrace also shows the source file name and line number, as well as the arguments to the function. The program counter value is omitted if it is at the beginning of the code for that line number.

Here is an example of a backtrace. It was made with the command 'bt 3', so it shows the innermost three frames.

#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) at builtin.c:993

#1 0x6e38 in expand_macro (sym=0x2b600) at macro.c:242

#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08) at macro.c:71

(More stack frames follow...)

The display for frame zero does not begin with a program counter value, indicating that your program has stopped at the beginning of the code for line 993 of builtin.c.

6.5 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.

The following commands are used for selecting a stack frame; all of them finish by printing a brief description of the stack frame 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 addr, Select the frame at address addr. This is useful mainly if the chaining

f addr 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.

6.5 Selecting a frame

73

Page 73
Image 73
HP gnu source-level debugger 5992-4701 manual Selecting a frame