<html lang="en">
<head>
<title>Output Options - GNU gprof</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="GNU gprof">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Invoking.html#Invoking" title="Invoking">
<link rel="next" href="Analysis-Options.html#Analysis-Options" title="Analysis Options">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
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''.

-->
<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>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Output-Options"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Analysis-Options.html#Analysis-Options">Analysis Options</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Invoking.html#Invoking">Invoking</a>
<hr>
</div>

<h3 class="section">4.1 Output Options</h3>

<!-- man begin OPTIONS -->
<p>These options specify which of several output formats
<code>gprof</code> should produce.

   <p>Many of these options take an optional <dfn>symspec</dfn> to specify
functions to be included or excluded.  These options can be
specified multiple times, with different symspecs, to include
or exclude sets of symbols.  See <a href="Symspecs.html#Symspecs">Symspecs</a>.

   <p>Specifying any of these options overrides the default (&lsquo;<samp><span class="samp">-p -q</span></samp>&rsquo;),
which prints a flat profile and call graph analysis
for all functions.

     <dl>
<dt><code>-A[</code><var>symspec</var><code>]</code><dt><code>--annotated-source[=</code><var>symspec</var><code>]</code><dd>The &lsquo;<samp><span class="samp">-A</span></samp>&rsquo; option causes <code>gprof</code> to print annotated source code. 
If <var>symspec</var> is specified, print output only for matching symbols. 
See <a href="Annotated-Source.html#Annotated-Source">The Annotated Source Listing</a>.

     <br><dt><code>-b</code><dt><code>--brief</code><dd>If the &lsquo;<samp><span class="samp">-b</span></samp>&rsquo; option is given, <code>gprof</code> doesn't print the
verbose blurbs that try to explain the meaning of all of the fields in
the tables.  This is useful if you intend to print out the output, or
are tired of seeing the blurbs.

     <br><dt><code>-C[</code><var>symspec</var><code>]</code><dt><code>--exec-counts[=</code><var>symspec</var><code>]</code><dd>The &lsquo;<samp><span class="samp">-C</span></samp>&rsquo; option causes <code>gprof</code> to
print a tally of functions and the number of times each was called. 
If <var>symspec</var> is specified, print tally only for matching symbols.

     <p>If the profile data file contains basic-block count records, specifying
the &lsquo;<samp><span class="samp">-l</span></samp>&rsquo; option, along with &lsquo;<samp><span class="samp">-C</span></samp>&rsquo;, will cause basic-block
execution counts to be tallied and displayed.

     <br><dt><code>-i</code><dt><code>--file-info</code><dd>The &lsquo;<samp><span class="samp">-i</span></samp>&rsquo; option causes <code>gprof</code> to display summary information
about the profile data file(s) and then exit.  The number of histogram,
call graph, and basic-block count records is displayed.

     <br><dt><code>-I </code><var>dirs</var><dt><code>--directory-path=</code><var>dirs</var><dd>The &lsquo;<samp><span class="samp">-I</span></samp>&rsquo; option specifies a list of search directories in
which to find source files.  Environment variable <var>GPROF_PATH</var>
can also be used to convey this information. 
Used mostly for annotated source output.

     <br><dt><code>-J[</code><var>symspec</var><code>]</code><dt><code>--no-annotated-source[=</code><var>symspec</var><code>]</code><dd>The &lsquo;<samp><span class="samp">-J</span></samp>&rsquo; option causes <code>gprof</code> not to
print annotated source code. 
If <var>symspec</var> is specified, <code>gprof</code> prints annotated source,
but excludes matching symbols.

     <br><dt><code>-L</code><dt><code>--print-path</code><dd>Normally, source filenames are printed with the path
component suppressed.  The &lsquo;<samp><span class="samp">-L</span></samp>&rsquo; option causes <code>gprof</code>
to print the full pathname of
source filenames, which is determined
from symbolic debugging information in the image file
and is relative to the directory in which the compiler
was invoked.

     <br><dt><code>-p[</code><var>symspec</var><code>]</code><dt><code>--flat-profile[=</code><var>symspec</var><code>]</code><dd>The &lsquo;<samp><span class="samp">-p</span></samp>&rsquo; option causes <code>gprof</code> to print a flat profile. 
If <var>symspec</var> is specified, print flat profile only for matching symbols. 
See <a href="Flat-Profile.html#Flat-Profile">The Flat Profile</a>.

     <br><dt><code>-P[</code><var>symspec</var><code>]</code><dt><code>--no-flat-profile[=</code><var>symspec</var><code>]</code><dd>The &lsquo;<samp><span class="samp">-P</span></samp>&rsquo; option causes <code>gprof</code> to suppress printing a flat profile. 
If <var>symspec</var> is specified, <code>gprof</code> prints a flat profile,
but excludes matching symbols.

     <br><dt><code>-q[</code><var>symspec</var><code>]</code><dt><code>--graph[=</code><var>symspec</var><code>]</code><dd>The &lsquo;<samp><span class="samp">-q</span></samp>&rsquo; option causes <code>gprof</code> to print the call graph analysis. 
If <var>symspec</var> is specified, print call graph only for matching symbols
and their children. 
See <a href="Call-Graph.html#Call-Graph">The Call Graph</a>.

     <br><dt><code>-Q[</code><var>symspec</var><code>]</code><dt><code>--no-graph[=</code><var>symspec</var><code>]</code><dd>The &lsquo;<samp><span class="samp">-Q</span></samp>&rsquo; option causes <code>gprof</code> to suppress printing the
call graph. 
If <var>symspec</var> is specified, <code>gprof</code> prints a call graph,
but excludes matching symbols.

     <br><dt><code>-t</code><dt><code>--table-length=</code><var>num</var><dd>The &lsquo;<samp><span class="samp">-t</span></samp>&rsquo; option causes the <var>num</var> most active source lines in
each source file to be listed when source annotation is enabled.  The
default is 10.

     <br><dt><code>-y</code><dt><code>--separate-files</code><dd>This option affects annotated source output only. 
Normally, <code>gprof</code> prints annotated source files
to standard-output.  If this option is specified,
annotated source for a file named <samp><span class="file">path/</span><var>filename</var></samp>
is generated in the file <samp><var>filename</var><span class="file">-ann</span></samp>.  If the underlying
file system would truncate <samp><var>filename</var><span class="file">-ann</span></samp> so that it
overwrites the original <samp><var>filename</var></samp>, <code>gprof</code> generates
annotated source in the file <samp><var>filename</var><span class="file">.ann</span></samp> instead (if the
original file name has an extension, that extension is <em>replaced</em>
with <samp><span class="file">.ann</span></samp>).

     <br><dt><code>-Z[</code><var>symspec</var><code>]</code><dt><code>--no-exec-counts[=</code><var>symspec</var><code>]</code><dd>The &lsquo;<samp><span class="samp">-Z</span></samp>&rsquo; option causes <code>gprof</code> not to
print a tally of functions and the number of times each was called. 
If <var>symspec</var> is specified, print tally, but exclude matching symbols.

     <br><dt><code>-r</code><dt><code>--function-ordering</code><dd>The &lsquo;<samp><span class="samp">--function-ordering</span></samp>&rsquo; option causes <code>gprof</code> to print a
suggested function ordering for the program based on profiling data. 
This option suggests an ordering which may improve paging, tlb and
cache behavior for the program on systems which support arbitrary
ordering of functions in an executable.

     <p>The exact details of how to force the linker to place functions
in a particular order is system dependent and out of the scope of this
manual.

     <br><dt><code>-R </code><var>map_file</var><dt><code>--file-ordering </code><var>map_file</var><dd>The &lsquo;<samp><span class="samp">--file-ordering</span></samp>&rsquo; option causes <code>gprof</code> to print a
suggested .o link line ordering for the program based on profiling data. 
This option suggests an ordering which may improve paging, tlb and
cache behavior for the program on systems which do not support arbitrary
ordering of functions in an executable.

     <p>Use of the &lsquo;<samp><span class="samp">-a</span></samp>&rsquo; argument is highly recommended with this option.

     <p>The <var>map_file</var> argument is a pathname to a file which provides
function name to object file mappings.  The format of the file is similar to
the output of the program <code>nm</code>.

     <pre class="smallexample">          c-parse.o:00000000 T yyparse
          c-parse.o:00000004 C yyerrflag
          c-lang.o:00000000 T maybe_objc_method_name
          c-lang.o:00000000 T print_lang_statistics
          c-lang.o:00000000 T recognize_objc_keyword
          c-decl.o:00000000 T print_lang_identifier
          c-decl.o:00000000 T print_lang_type
          ...
</pre>
     <p>To create a <var>map_file</var> with <span class="sc">gnu</span> <code>nm</code>, type a command like
<kbd>nm --extern-only --defined-only -v --print-file-name program-name</kbd>.

     <br><dt><code>-T</code><dt><code>--traditional</code><dd>The &lsquo;<samp><span class="samp">-T</span></samp>&rsquo; option causes <code>gprof</code> to print its output in
&ldquo;traditional&rdquo; BSD style.

     <br><dt><code>-w </code><var>width</var><dt><code>--width=</code><var>width</var><dd>Sets width of output lines to <var>width</var>. 
Currently only used when printing the function index at the bottom
of the call graph.

     <br><dt><code>-x</code><dt><code>--all-lines</code><dd>This option affects annotated source output only. 
By default, only the lines at the beginning of a basic-block
are annotated.  If this option is specified, every line in
a basic-block is annotated by repeating the annotation for the
first line.  This behavior is similar to <code>tcov</code>'s &lsquo;<samp><span class="samp">-a</span></samp>&rsquo;.

     <br><dt><code>--demangle[=</code><var>style</var><code>]</code><dt><code>--no-demangle</code><dd>These options control whether C++ symbol names should be demangled when
printing output.  The default is to demangle symbols.  The
<code>--no-demangle</code> option may be used to turn off demangling. Different
compilers have different mangling styles.  The optional demangling style
argument can be used to choose an appropriate demangling style for your
compiler. 
</dl>

   </body></html>

