118 lines
6.0 KiB
HTML
118 lines
6.0 KiB
HTML
|
<html lang="en">
|
||
|
<head>
|
||
|
<title>Explicit Locations - 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="Specify-Location.html#Specify-Location" title="Specify Location">
|
||
|
<link rel="prev" href="Linespec-Locations.html#Linespec-Locations" title="Linespec Locations">
|
||
|
<link rel="next" href="Address-Locations.html#Address-Locations" title="Address Locations">
|
||
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||
|
<!--
|
||
|
Copyright (C) 1988-2019 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>
|
||
|
</head>
|
||
|
<body>
|
||
|
<div class="node">
|
||
|
<a name="Explicit-Locations"></a>
|
||
|
<p>
|
||
|
Next: <a rel="next" accesskey="n" href="Address-Locations.html#Address-Locations">Address Locations</a>,
|
||
|
Previous: <a rel="previous" accesskey="p" href="Linespec-Locations.html#Linespec-Locations">Linespec Locations</a>,
|
||
|
Up: <a rel="up" accesskey="u" href="Specify-Location.html#Specify-Location">Specify Location</a>
|
||
|
<hr>
|
||
|
</div>
|
||
|
|
||
|
<h4 class="subsection">9.2.2 Explicit Locations</h4>
|
||
|
|
||
|
<p><a name="index-explicit-locations-565"></a>
|
||
|
<dfn>Explicit locations</dfn> allow the user to directly specify the source
|
||
|
location's parameters using option-value pairs.
|
||
|
|
||
|
<p>Explicit locations are useful when several functions, labels, or
|
||
|
file names have the same name (base name for files) in the program's
|
||
|
sources. In these cases, explicit locations point to the source
|
||
|
line you meant more accurately and unambiguously. Also, using
|
||
|
explicit locations might be faster in large programs.
|
||
|
|
||
|
<p>For example, the linespec ‘<samp><span class="samp">foo:bar</span></samp>’ may refer to a function <code>bar</code>
|
||
|
defined in the file named <samp><span class="file">foo</span></samp> or the label <code>bar</code> in a function
|
||
|
named <code>foo</code>. <span class="sc">gdb</span> must search either the file system or
|
||
|
the symbol table to know.
|
||
|
|
||
|
<p>The list of valid explicit location options is summarized in the
|
||
|
following table:
|
||
|
|
||
|
<dl>
|
||
|
<dt><code>-source </code><var>filename</var><dd>The value specifies the source file name. To differentiate between
|
||
|
files with the same base name, prepend as many directories as is necessary
|
||
|
to uniquely identify the desired file, e.g., <samp><span class="file">foo/bar/baz.c</span></samp>. Otherwise
|
||
|
<span class="sc">gdb</span> will use the first file it finds with the given base
|
||
|
name. This option requires the use of either <code>-function</code> or <code>-line</code>.
|
||
|
|
||
|
<br><dt><code>-function </code><var>function</var><dd>The value specifies the name of a function. Operations
|
||
|
on function locations unmodified by other options (such as <code>-label</code>
|
||
|
or <code>-line</code>) refer to the line that begins the body of the function.
|
||
|
In C, for example, this is the line with the open brace.
|
||
|
|
||
|
<p>By default, in C<tt>++</tt> and Ada, <var>function</var> is interpreted as
|
||
|
specifying all functions named <var>function</var> in all scopes. For
|
||
|
C<tt>++</tt>, this means in all namespaces and classes. For Ada, this
|
||
|
means in all packages.
|
||
|
|
||
|
<p>For example, assuming a program with C<tt>++</tt> symbols named
|
||
|
<code>A::B::func</code> and <code>B::func</code>, both commands <kbd>break -function func</kbd><!-- /@w --> and <kbd>break -function B::func</kbd><!-- /@w --> set a
|
||
|
breakpoint on both symbols.
|
||
|
|
||
|
<p>You can use the <kbd>-qualified</kbd> flag to override this (see below).
|
||
|
|
||
|
<br><dt><code>-qualified</code><dd>
|
||
|
This flag makes <span class="sc">gdb</span> interpret a function name specified with
|
||
|
<kbd>-function</kbd> as a complete fully-qualified name.
|
||
|
|
||
|
<p>For example, assuming a C<tt>++</tt> program with symbols named
|
||
|
<code>A::B::func</code> and <code>B::func</code>, the <kbd>break -qualified -function B::func</kbd><!-- /@w --> command sets a breakpoint on <code>B::func</code>, only.
|
||
|
|
||
|
<p>(Note: the <kbd>-qualified</kbd> option can precede a linespec as well
|
||
|
(see <a href="Linespec-Locations.html#Linespec-Locations">Linespec Locations</a>), so the particular example above could be
|
||
|
simplified as <kbd>break -qualified B::func</kbd><!-- /@w -->.)
|
||
|
|
||
|
<br><dt><code>-label </code><var>label</var><dd>The value specifies the name of a label. When the function
|
||
|
name is not specified, the label is searched in the function of the currently
|
||
|
selected stack frame.
|
||
|
|
||
|
<br><dt><code>-line </code><var>number</var><dd>The value specifies a line offset for the location. The offset may either
|
||
|
be absolute (<code>-line 3</code>) or relative (<code>-line +3</code>), depending on
|
||
|
the command. When specified without any other options, the line offset is
|
||
|
relative to the current line.
|
||
|
</dl>
|
||
|
|
||
|
<p>Explicit location options may be abbreviated by omitting any non-unique
|
||
|
trailing characters from the option name, e.g., <kbd>break -s main.c -li 3</kbd><!-- /@w -->.
|
||
|
|
||
|
</body></html>
|
||
|
|