<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2015 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: Specify Location</title>

<meta name="description" content="Debugging with GDB: Specify Location">
<meta name="keywords" content="Debugging with GDB: Specify Location">
<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="Source.html#Source" rel="up" title="Source">
<link href="Edit.html#Edit" rel="next" title="Edit">
<link href="List.html#List" rel="prev" title="List">
<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="Specify-Location"></a>
<div class="header">
<p>
Next: <a href="Edit.html#Edit" accesskey="n" rel="next">Edit</a>, Previous: <a href="List.html#List" accesskey="p" rel="prev">List</a>, Up: <a href="Source.html#Source" accesskey="u" rel="up">Source</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="Specifying-a-Location"></a>
<h3 class="section">9.2 Specifying a Location</h3>
<a name="index-specifying-location"></a>
<a name="index-linespec"></a>

<p>Several <small>GDB</small> commands accept arguments that specify a location
of your program&rsquo;s code.  Since <small>GDB</small> is a source-level
debugger, a location usually specifies some line in the source code;
for that reason, locations are also known as <em>linespecs</em>.
</p>
<p>Here are all the different ways of specifying a code location that
<small>GDB</small> understands:
</p>
<dl compact="compact">
<dt><code><var>linenum</var></code></dt>
<dd><p>Specifies the line number <var>linenum</var> of the current source file.
</p>
</dd>
<dt><code>-<var>offset</var></code></dt>
<dt><code>+<var>offset</var></code></dt>
<dd><p>Specifies the line <var>offset</var> lines before or after the <em>current
line</em>.  For the <code>list</code> command, the current line is the last one
printed; for the breakpoint commands, this is the line at which
execution stopped in the currently selected <em>stack frame</em>
(see <a href="Frames.html#Frames">Frames</a>, for a description of stack frames.)  When
used as the second of the two linespecs in a <code>list</code> command,
this specifies the line <var>offset</var> lines up or down from the first
linespec.
</p>
</dd>
<dt><code><var>filename</var>:<var>linenum</var></code></dt>
<dd><p>Specifies the line <var>linenum</var> in the source file <var>filename</var>.
If <var>filename</var> is a relative file name, then it will match any
source file name with the same trailing components.  For example, if
<var>filename</var> is &lsquo;<samp>gcc/expr.c</samp>&rsquo;, then it will match source file
name of <samp>/build/trunk/gcc/expr.c</samp>, but not
<samp>/build/trunk/libcpp/expr.c</samp> or <samp>/build/trunk/gcc/x-expr.c</samp>.
</p>
</dd>
<dt><code><var>function</var></code></dt>
<dd><p>Specifies the line that begins the body of the function <var>function</var>.
For example, in C, this is the line with the open brace.
</p>
</dd>
<dt><code><var>function</var>:<var>label</var></code></dt>
<dd><p>Specifies the line where <var>label</var> appears in <var>function</var>.
</p>
</dd>
<dt><code><var>filename</var>:<var>function</var></code></dt>
<dd><p>Specifies the line that begins the body of the function <var>function</var>
in the file <var>filename</var>.  You only need the file name with a
function name to avoid ambiguity when there are identically named
functions in different source files.
</p>
</dd>
<dt><code><var>label</var></code></dt>
<dd><p>Specifies the line at which the label named <var>label</var> appears.
<small>GDB</small> searches for the label in the function corresponding to
the currently selected stack frame.  If there is no current selected
stack frame (for instance, if the inferior is not running), then
<small>GDB</small> will not search for a label.
</p>
</dd>
<dt><code>*<var>address</var></code></dt>
<dd><p>Specifies the program address <var>address</var>.  For line-oriented
commands, such as <code>list</code> and <code>edit</code>, this specifies a source
line that contains <var>address</var>.  For <code>break</code> and other
breakpoint oriented commands, this can be used to set breakpoints in
parts of your program which do not have debugging information or
source files.
</p>
<p>Here <var>address</var> may be any expression valid in the current working
language (see <a href="Languages.html#Languages">working language</a>) that specifies a code
address.  In addition, as a convenience, <small>GDB</small> extends the
semantics of expressions used in locations to cover the situations
that frequently happen during debugging.  Here are the various forms
of <var>address</var>:
</p>
<dl compact="compact">
<dt><code><var>expression</var></code></dt>
<dd><p>Any expression valid in the current working language.
</p>
</dd>
<dt><code><var>funcaddr</var></code></dt>
<dd><p>An address of a function or procedure derived from its name.  In C,
C<tt>++</tt>, Java, Objective-C, Fortran, minimal, and assembly, this is
simply the function&rsquo;s name <var>function</var> (and actually a special case
of a valid expression).  In Pascal and Modula-2, this is
<code>&amp;<var>function</var></code>.  In Ada, this is <code><var>function</var>'Address</code>
(although the Pascal form also works).
</p>
<p>This form specifies the address of the function&rsquo;s first instruction,
before the stack frame and arguments have been set up.
</p>
</dd>
<dt><code>'<var>filename</var>':<var>funcaddr</var></code></dt>
<dd><p>Like <var>funcaddr</var> above, but also specifies the name of the source
file explicitly.  This is useful if the name of the function does not
specify the function unambiguously, e.g., if there are several
functions with identical names in different source files.
</p></dd>
</dl>

<a name="index-breakpoint-at-static-probe-point"></a>
</dd>
<dt><code>-pstap|-probe-stap <span class="roman">[</span><var>objfile</var>:<span class="roman">[</span><var>provider</var>:<span class="roman">]</span><span class="roman">]</span><var>name</var></code></dt>
<dd><p>The <small>GNU</small>/Linux tool <code>SystemTap</code> provides a way for
applications to embed static probes.  See <a href="Static-Probe-Points.html#Static-Probe-Points">Static Probe Points</a>, for more
information on finding and using static probes.  This form of linespec
specifies the location of such a static probe.
</p>
<p>If <var>objfile</var> is given, only probes coming from that shared library
or executable matching <var>objfile</var> as a regular expression are considered.
If <var>provider</var> is given, then only probes from that provider are considered.
If several probes match the spec, <small>GDB</small> will insert a breakpoint at
each one of those probes.
</p>
</dd>
</dl>


<hr>
<div class="header">
<p>
Next: <a href="Edit.html#Edit" accesskey="n" rel="next">Edit</a>, Previous: <a href="List.html#List" accesskey="p" rel="prev">List</a>, Up: <a href="Source.html#Source" accesskey="u" rel="up">Source</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>
