hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2021 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: Frame Info</title>
 
<meta name="description" content="Debugging with GDB: Frame Info">
<meta name="keywords" content="Debugging with GDB: Frame Info">
<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="Frame-Apply.html#Frame-Apply" rel="next" title="Frame Apply">
<link href="Selection.html#Selection" rel="previous" title="Selection">
<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="Frame-Info"></a>
<div class="header">
<p>
Next: <a href="Frame-Apply.html#Frame-Apply" accesskey="n" rel="next">Frame Apply</a>, Previous: <a href="Selection.html#Selection" accesskey="p" rel="previous">Selection</a>, Up: <a href="Stack.html#Stack" accesskey="u" rel="up">Stack</a> &nbsp; [<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="Information-about-a-Frame"></a>
<h3 class="section">8.4 Information about a Frame</h3>
 
<p>There are several other commands to print information about the selected
stack frame.
</p>
<dl compact="compact">
<dt><code>frame</code></dt>
<dt><code>f</code></dt>
<dd><p>When used without any argument, this command does not change which
frame is selected, but prints a brief description of the currently
selected stack frame.  It can be abbreviated <code>f</code>.  With an
argument, this command is used to select a stack frame.
See <a href="Selection.html#Selection">Selecting a Frame</a>.
</p>
<a name="index-info-frame"></a>
<a name="index-info-f-_0028info-frame_0029"></a>
</dd>
<dt><code>info frame</code></dt>
<dt><code>info f</code></dt>
<dd><p>This command prints a verbose description of the selected stack frame,
including:
</p>
<ul>
<li> the address of the frame
</li><li> the address of the next frame down (called by this frame)
</li><li> the address of the next frame up (caller of this frame)
</li><li> the language in which the source code corresponding to this frame is written
</li><li> the address of the frame&rsquo;s arguments
</li><li> the address of the frame&rsquo;s local variables
</li><li> the program counter saved in it (the address of execution in the caller frame)
</li><li> which registers were saved in the frame
</li></ul>
 
<p>The verbose description is useful when
something has gone wrong that has made the stack format fail to fit
the usual conventions.
</p>
</dd>
<dt><code>info frame <span class="roman">[</span> <var>frame-selection-spec</var> <span class="roman">]</span></code></dt>
<dt><code>info f <span class="roman">[</span> <var>frame-selection-spec</var> <span class="roman">]</span></code></dt>
<dd><p>Print a verbose description of the frame selected by
<var>frame-selection-spec</var>.  The <var>frame-selection-spec</var> is the
same as for the <code>frame</code> command (see <a href="Selection.html#Selection">Selecting
a Frame</a>).  The selected frame remains unchanged by this command.
</p>
<a name="index-info-args"></a>
</dd>
<dt><code>info args [-q]</code></dt>
<dd><p>Print the arguments of the selected frame, each on a separate line.
</p>
<p>The optional flag &lsquo;<samp>-q</samp>&rsquo;, which stands for &lsquo;<samp>quiet</samp>&rsquo;, disables
printing header information and messages explaining why no argument
have been printed.
</p>
</dd>
<dt><code>info args [-q] [-t <var>type_regexp</var>] [<var>regexp</var>]</code></dt>
<dd><p>Like <kbd>info args</kbd>, but only print the arguments selected
with the provided regexp(s).
</p>
<p>If <var>regexp</var> is provided, print only the arguments whose names
match the regular expression <var>regexp</var>.
</p>
<p>If <var>type_regexp</var> is provided, print only the arguments whose
types, as printed by the <code>whatis</code> command, match
the regular expression <var>type_regexp</var>.
If <var>type_regexp</var> contains space(s), it should be enclosed in
quote characters.  If needed, use backslash to escape the meaning
of special characters or quotes.
</p>
<p>If both <var>regexp</var> and <var>type_regexp</var> are provided, an argument
is printed only if its name matches <var>regexp</var> and its type matches
<var>type_regexp</var>.
</p>
</dd>
<dt><code>info locals [-q]</code></dt>
<dd><a name="index-info-locals"></a>
<p>Print the local variables of the selected frame, each on a separate
line.  These are all variables (declared either static or automatic)
accessible at the point of execution of the selected frame.
</p>
<p>The optional flag &lsquo;<samp>-q</samp>&rsquo;, which stands for &lsquo;<samp>quiet</samp>&rsquo;, disables
printing header information and messages explaining why no local variables
have been printed.
</p>
</dd>
<dt><code>info locals [-q] [-t <var>type_regexp</var>] [<var>regexp</var>]</code></dt>
<dd><p>Like <kbd>info locals</kbd>, but only print the local variables selected
with the provided regexp(s).
</p>
<p>If <var>regexp</var> is provided, print only the local variables whose names
match the regular expression <var>regexp</var>.
</p>
<p>If <var>type_regexp</var> is provided, print only the local variables whose
types, as printed by the <code>whatis</code> command, match
the regular expression <var>type_regexp</var>.
If <var>type_regexp</var> contains space(s), it should be enclosed in
quote characters.  If needed, use backslash to escape the meaning
of special characters or quotes.
</p>
<p>If both <var>regexp</var> and <var>type_regexp</var> are provided, a local variable
is printed only if its name matches <var>regexp</var> and its type matches
<var>type_regexp</var>.
</p>
<p>The command <kbd>info locals -q -t <var>type_regexp</var></kbd> can usefully be
combined with the commands <kbd>frame apply</kbd> and <kbd>thread apply</kbd>.
For example, your program might use Resource Acquisition Is
Initialization types (RAII) such as <code>lock_something_t</code>: each
local variable of type <code>lock_something_t</code> automatically places a
lock that is destroyed when the variable goes out of scope.  You can
then list all acquired locks in your program by doing
</p><div class="smallexample">
<pre class="smallexample">thread apply all -s frame apply all -s info locals -q -t lock_something_t
</pre></div>
<p>or the equivalent shorter form
</p><div class="smallexample">
<pre class="smallexample">tfaas i lo -q -t lock_something_t
</pre></div>
 
</dd>
</dl>
 
<hr>
<div class="header">
<p>
Next: <a href="Frame-Apply.html#Frame-Apply" accesskey="n" rel="next">Frame Apply</a>, Previous: <a href="Selection.html#Selection" accesskey="p" rel="previous">Selection</a>, Up: <a href="Stack.html#Stack" accesskey="u" rel="up">Stack</a> &nbsp; [<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>