diff options
author | alk3pInjection <webmaster@raspii.tech> | 2024-02-04 16:16:35 +0800 |
---|---|---|
committer | alk3pInjection <webmaster@raspii.tech> | 2024-02-04 16:16:35 +0800 |
commit | abdaadbcae30fe0c9a66c7516798279fdfd97750 (patch) | |
tree | 00a54a6e25601e43876d03c1a4a12a749d4a914c /share/doc/gdb/Frames.html |
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
Change-Id: I7303388733328cd98ab9aa3c30236db67f2e9e9c
Diffstat (limited to 'share/doc/gdb/Frames.html')
-rw-r--r-- | share/doc/gdb/Frames.html | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/share/doc/gdb/Frames.html b/share/doc/gdb/Frames.html new file mode 100644 index 0000000..676fd40 --- /dev/null +++ b/share/doc/gdb/Frames.html @@ -0,0 +1,134 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with the +Invariant Sections being "Free Software" and "Free Software Needs +Free Documentation", with the Front-Cover Texts being "A GNU Manual," +and with the Back-Cover Texts as in (a) below. + +(a) The FSF's Back-Cover Text is: "You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom." --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>Debugging with GDB: Frames</title> + +<meta name="description" content="Debugging with GDB: Frames"> +<meta name="keywords" content="Debugging with GDB: Frames"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Stack.html#Stack" rel="up" title="Stack"> +<link href="Backtrace.html#Backtrace" rel="next" title="Backtrace"> +<link href="Stack.html#Stack" rel="previous" title="Stack"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="Frames"></a> +<div class="header"> +<p> +Next: <a href="Backtrace.html#Backtrace" accesskey="n" rel="next">Backtrace</a>, Up: <a href="Stack.html#Stack" accesskey="u" rel="up">Stack</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="Stack-Frames"></a> +<h3 class="section">8.1 Stack Frames</h3> + +<a name="index-frame_002c-definition"></a> +<a name="index-stack-frame"></a> +<p>The call stack is divided up into contiguous pieces called <em>stack +frames</em>, or <em>frames</em> for short; each frame is the data associated +with one call to one function. The frame contains the arguments given +to the function, the function’s local variables, and the address at +which the function is executing. +</p> +<a name="index-initial-frame"></a> +<a name="index-outermost-frame"></a> +<a name="index-innermost-frame"></a> +<p>When your program is started, the stack has only one frame, that of the +function <code>main</code>. This is called the <em>initial</em> frame or the +<em>outermost</em> frame. Each time a function is called, a new frame is +made. Each time a function returns, the frame for that function invocation +is eliminated. If a function is recursive, there can be many frames for +the same function. The frame for the function in which execution is +actually occurring is called the <em>innermost</em> frame. This is the most +recently created of all the stack frames that still exist. +</p> +<a name="index-frame-pointer"></a> +<p>Inside your program, stack frames are identified by their addresses. A +stack frame consists of many bytes, each of which has its own address; each +kind of computer has a convention for choosing one byte whose +address serves as the address of the frame. Usually this address is kept +in a register called the <em>frame pointer register</em> +(see <a href="Registers.html#Registers">$fp</a>) while execution is going on in that frame. +</p> +<a name="index-frame-level"></a> +<a name="index-frame-number"></a> +<p><small>GDB</small> labels each existing stack frame with a <em>level</em>, a +number that is zero for the innermost frame, one for the frame that +called it, and so on upward. These level numbers give you a way of +designating stack frames in <small>GDB</small> commands. The terms +<em>frame number</em> and <em>frame level</em> can be used interchangeably to +describe this number. +</p> +<a name="index-frameless-execution"></a> +<p>Some compilers provide a way to compile functions so that they operate +without stack frames. (For example, the <small>GCC</small> option +</p><div class="smallexample"> +<pre class="smallexample">‘<samp>-fomit-frame-pointer</samp>’ +</pre></div> +<p>generates functions without a frame.) +This is occasionally done with heavily used library functions to save +the frame setup time. <small>GDB</small> has limited facilities for dealing +with these function invocations. If the innermost function invocation +has no stack frame, <small>GDB</small> 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, <small>GDB</small> has +no provision for frameless functions elsewhere in the stack. +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Backtrace.html#Backtrace" accesskey="n" rel="next">Backtrace</a>, Up: <a href="Stack.html#Stack" accesskey="u" rel="up">Stack</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> |