blob: 9a885020510a22f190b94ae9a207a778af0e88e9 [file] [log] [blame]
<!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>