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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2017 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.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Debugging with GDB: Index Files</title>
 
<meta name="description" content="Debugging with GDB: Index Files">
<meta name="keywords" content="Debugging with GDB: Index Files">
<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="GDB-Files.html#GDB-Files" rel="up" title="GDB Files">
<link href="Symbol-Errors.html#Symbol-Errors" rel="next" title="Symbol Errors">
<link href="MiniDebugInfo.html#MiniDebugInfo" rel="prev" title="MiniDebugInfo">
<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="Index-Files"></a>
<div class="header">
<p>
Next: <a href="Symbol-Errors.html#Symbol-Errors" accesskey="n" rel="next">Symbol Errors</a>, Previous: <a href="MiniDebugInfo.html#MiniDebugInfo" accesskey="p" rel="prev">MiniDebugInfo</a>, Up: <a href="GDB-Files.html#GDB-Files" accesskey="u" rel="up">GDB Files</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="Index-Files-Speed-Up-GDB"></a>
<h3 class="section">18.5 Index Files Speed Up <small>GDB</small></h3>
<a name="index-index-files"></a>
<a name="index-_002egdb_005findex-section"></a>
 
<p>When <small>GDB</small> finds a symbol file, it scans the symbols in the
file in order to construct an internal symbol table.  This lets most
<small>GDB</small> operations work quickly&mdash;at the cost of a delay early
on.  For large programs, this delay can be quite lengthy, so
<small>GDB</small> provides a way to build an index, which speeds up
startup.
</p>
<p>The index is stored as a section in the symbol file.  <small>GDB</small> can
write the index to a file, then you can put it into the symbol file
using <code>objcopy</code>.
</p>
<p>To create an index file, use the <code>save gdb-index</code> command:
</p>
<dl compact="compact">
<dt><code>save gdb-index <var>directory</var></code></dt>
<dd><a name="index-save-gdb_002dindex"></a>
<p>Create an index file for each symbol file currently known by
<small>GDB</small>.  Each file is named after its corresponding symbol file,
with &lsquo;<samp>.gdb-index</samp>&rsquo; appended, and is written into the given
<var>directory</var>.
</p></dd>
</dl>
 
<p>Once you have created an index file you can merge it into your symbol
file, here named <samp>symfile</samp>, using <code>objcopy</code>:
</p>
<div class="smallexample">
<pre class="smallexample">$ objcopy --add-section .gdb_index=symfile.gdb-index \
    --set-section-flags .gdb_index=readonly symfile symfile
</pre></div>
 
<p><small>GDB</small> will normally ignore older versions of <samp>.gdb_index</samp>
sections that have been deprecated.  Usually they are deprecated because
they are missing a new feature or have performance issues.
To tell <small>GDB</small> to use a deprecated index section anyway
specify <code>set use-deprecated-index-sections on</code>.
The default is <code>off</code>.
This can speed up startup, but may result in some functionality being lost.
See <a href="Index-Section-Format.html#Index-Section-Format">Index Section Format</a>.
</p>
<p><em>Warning:</em> Setting <code>use-deprecated-index-sections</code> to <code>on</code>
must be done before gdb reads the file.  The following will not work:
</p>
<div class="smallexample">
<pre class="smallexample">$ gdb -ex &quot;set use-deprecated-index-sections on&quot; &lt;program&gt;
</pre></div>
 
<p>Instead you must do, for example,
</p>
<div class="smallexample">
<pre class="smallexample">$ gdb -iex &quot;set use-deprecated-index-sections on&quot; &lt;program&gt;
</pre></div>
 
<p>There are currently some limitation on indices.  They only work when
for DWARF debugging information, not stabs.  And, they do not
currently work for programs using Ada.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Symbol-Errors.html#Symbol-Errors" accesskey="n" rel="next">Symbol Errors</a>, Previous: <a href="MiniDebugInfo.html#MiniDebugInfo" accesskey="p" rel="prev">MiniDebugInfo</a>, Up: <a href="GDB-Files.html#GDB-Files" accesskey="u" rel="up">GDB Files</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>