blob: 17c059556071f38ee1584fb4c97406d3ec921eb0 [file] [log] [blame]
<html lang="en">
<head>
<title>Index Files - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="GDB-Files.html#GDB-Files" title="GDB Files">
<link rel="prev" href="Separate-Debug-Files.html#Separate-Debug-Files" title="Separate Debug Files">
<link rel="next" href="Symbol-Errors.html#Symbol-Errors" title="Symbol Errors">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Index-Files"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Symbol-Errors.html#Symbol-Errors">Symbol Errors</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Separate-Debug-Files.html#Separate-Debug-Files">Separate Debug Files</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="GDB-Files.html#GDB-Files">GDB Files</a>
<hr>
</div>
<h3 class="section">18.3 Index Files Speed Up <span class="sc">gdb</span></h3>
<p><a name="index-index-files-1021"></a><a name="index-g_t_0040samp_007b_002egdb_005findex_007d-section-1022"></a>
When <span class="sc">gdb</span> finds a symbol file, it scans the symbols in the
file in order to construct an internal symbol table. This lets most
<span class="sc">gdb</span> operations work quickly&mdash;at the cost of a delay early
on. For large programs, this delay can be quite lengthy, so
<span class="sc">gdb</span> provides a way to build an index, which speeds up
startup.
<p>The index is stored as a section in the symbol file. <span class="sc">gdb</span> can
write the index to a file, then you can put it into the symbol file
using <samp><span class="command">objcopy</span></samp>.
<p>To create an index file, use the <code>save gdb-index</code> command:
<dl>
<dt><code>save gdb-index </code><var>directory</var><dd><a name="index-save-gdb_002dindex-1023"></a>Create an index file for each symbol file currently known by
<span class="sc">gdb</span>. Each file is named after its corresponding symbol file,
with &lsquo;<samp><span class="samp">.gdb-index</span></samp>&rsquo; appended, and is written into the given
<var>directory</var>.
</dl>
<p>Once you have created an index file you can merge it into your symbol
file, here named <samp><span class="file">symfile</span></samp>, using <samp><span class="command">objcopy</span></samp>:
<pre class="smallexample"> $ objcopy --add-section .gdb_index=symfile.gdb-index \
--set-section-flags .gdb_index=readonly symfile symfile
</pre>
<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.
</body></html>