<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the gprof profiler of the GNU system.

Copyright (C) 1988, 1992, 1997, 1998, 1999, 2000, 2001, 2003,
2007, 2008, 2009 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 no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts.  A copy of the license is included in the
section entitled "GNU Free Documentation License".
 -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU gprof: Annotated Source</title>

<meta name="description" content="GNU gprof: Annotated Source">
<meta name="keywords" content="GNU gprof: Annotated Source">
<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="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Output.html#Output" rel="up" title="Output">
<link href="Inaccuracy.html#Inaccuracy" rel="next" title="Inaccuracy">
<link href="Line_002dby_002dline.html#Line_002dby_002dline" rel="prev" title="Line-by-line">
<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="Annotated-Source"></a>
<div class="header">
<p>
Previous: <a href="Line_002dby_002dline.html#Line_002dby_002dline" accesskey="p" rel="prev">Line-by-line</a>, Up: <a href="Output.html#Output" accesskey="u" rel="up">Output</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>
<hr>
<a name="The-Annotated-Source-Listing"></a>
<h3 class="section">5.4 The Annotated Source Listing</h3>

<p><code>gprof</code>&rsquo;s &lsquo;<samp>-A</samp>&rsquo; option triggers an annotated source listing,
which lists the program&rsquo;s source code, each function labeled with the
number of times it was called.  You may also need to specify the
&lsquo;<samp>-I</samp>&rsquo; option, if <code>gprof</code> can&rsquo;t find the source code files.
</p>
<p>With older versions of <code>gcc</code> compiling with &lsquo;<samp>gcc &hellip; -g
-pg -a</samp>&rsquo; augments your program with basic-block counting code, in
addition to function counting code.  This enables <code>gprof</code> to
determine how many times each line of code was executed.  With newer
versions of <code>gcc</code> support for displaying basic-block counts is
provided by the <code>gcov</code> program.
</p>
<p>For example, consider the following function, taken from gzip,
with line numbers added:
</p>
<div class="smallexample">
<pre class="smallexample"> 1 ulg updcrc(s, n)
 2     uch *s;
 3     unsigned n;
 4 {
 5     register ulg c;
 6
 7     static ulg crc = (ulg)0xffffffffL;
 8
 9     if (s == NULL) {
10         c = 0xffffffffL;
11     } else {
12         c = crc;
13         if (n) do {
14             c = crc_32_tab[...];
15         } while (--n);
16     }
17     crc = c;
18     return c ^ 0xffffffffL;
19 }

</pre></div>

<p><code>updcrc</code> has at least five basic-blocks.
One is the function itself.  The
<code>if</code> statement on line 9 generates two more basic-blocks, one
for each branch of the <code>if</code>.  A fourth basic-block results from
the <code>if</code> on line 13, and the contents of the <code>do</code> loop form
the fifth basic-block.  The compiler may also generate additional
basic-blocks to handle various special cases.
</p>
<p>A program augmented for basic-block counting can be analyzed with
&lsquo;<samp>gprof -l -A</samp>&rsquo;.
The &lsquo;<samp>-x</samp>&rsquo; option is also helpful,
to ensure that each line of code is labeled at least once.
Here is <code>updcrc</code>&rsquo;s
annotated source listing for a sample <code>gzip</code> run:
</p>
<div class="smallexample">
<pre class="smallexample">                ulg updcrc(s, n)
                    uch *s;
                    unsigned n;
            2 -&gt;{
                    register ulg c;
                
                    static ulg crc = (ulg)0xffffffffL;
                
            2 -&gt;    if (s == NULL) {
            1 -&gt;        c = 0xffffffffL;
            1 -&gt;    } else {
            1 -&gt;        c = crc;
            1 -&gt;        if (n) do {
        26312 -&gt;            c = crc_32_tab[...];
26312,1,26311 -&gt;        } while (--n);
                    }
            2 -&gt;    crc = c;
            2 -&gt;    return c ^ 0xffffffffL;
            2 -&gt;}
</pre></div>

<p>In this example, the function was called twice, passing once through
each branch of the <code>if</code> statement.  The body of the <code>do</code>
loop was executed a total of 26312 times.  Note how the <code>while</code>
statement is annotated.  It began execution 26312 times, once for
each iteration through the loop.  One of those times (the last time)
it exited, while it branched back to the beginning of the loop 26311 times.
</p>
<hr>
<div class="header">
<p>
Previous: <a href="Line_002dby_002dline.html#Line_002dby_002dline" accesskey="p" rel="prev">Line-by-line</a>, Up: <a href="Output.html#Output" accesskey="u" rel="up">Output</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>



</body>
</html>
