Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

27.4. Frames

Whenever gdb prints a frame, it annotates it. For example, this applies to frames printed when gdb stops, output from commands such as backtrace or up, etc.

The frame annotation begins with

^Z^Zframe-begin level address
level-string

where level is the number of the frame (0 is the innermost frame, and other frames have positive numbers), address is the address of the code executing in that frame, and level-string is a string designed to convey the level to the user. address is in the form 0x followed by one or more lowercase hex digits (note that this does not depend on the language). The frame ends with

^Z^Zframe-end

Between these annotations is the main body of the frame, which can consist of

  • ^Z^Zfunction-call
    function-call-string

    where function-call-string is text designed to convey to the user that this frame is associated with a function call made by gdb to a function in the program being debugged.

  • ^Z^Zsignal-handler-caller
    signal-handler-caller-string

    where signal-handler-caller-string is text designed to convey to the user that this frame is associated with whatever mechanism is used by this operating system to call a signal handler (it is the frame which calls the signal handler, not the frame for the signal handler itself).

  • A normal frame.

    This can optionally (depending on whether this is thought of as interesting information for the user to see) begin with

    ^Z^Zframe-address
    address
    ^Z^Zframe-address-end
    separator-string

    where address is the address executing in the frame (the same address as in the frame-begin annotation, but printed in a form which is intended for user consumption--in particular, the syntax varies depending on the language), and separator-string is a string intended to separate this address from what follows for the user's benefit.

    Then comes

    ^Z^Zframe-function-name
    function-name
    ^Z^Zframe-args
    arguments

    where function-name is the name of the function executing in the frame, or ?? if not known, and arguments are the arguments to the frame, with parentheses around them (each argument is annotated individually as well, (refer to Section 27.3 Values).

    If source information is available, a reference to it is then printed:

    ^Z^Zframe-source-begin
    source-intro-string
    ^Z^Zframe-source-file
    filename
    ^Z^Zframe-source-file-end
    :
    ^Z^Zframe-source-line
    line-number
    ^Z^Zframe-source-end

    where source-intro-string separates for the user's benefit the reference from the text which precedes it, filename is the name of the source file, and line-number is the line number within that file (the first line is line 1).

    If gdb prints some information about where the frame is from (which library, which load segment, etc.; currently only done on the RS/6000), it is annotated with

    ^Z^Zframe-where
    information

    Then, if source is to actually be displayed for this frame (for example, this is not true for output from the backtrace command), then a source annotation (refer to Section 27.11 Displaying Source) is displayed. Unlike most annotations, this is output instead of the normal text which would be output, not in addition.

 
 
  Published under the terms of the GNU General Public License Design by Interspire