| <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> |
| |