| <html lang="en"> | 
 | <head> | 
 | <title>Executing - 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="prev" href="Compiling.html#Compiling" title="Compiling"> | 
 | <link rel="next" href="Invoking.html#Invoking" title="Invoking"> | 
 | <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="Executing"></a> | 
 | <p> | 
 | Next: <a rel="next" accesskey="n" href="Invoking.html#Invoking">Invoking</a>, | 
 | Previous: <a rel="previous" accesskey="p" href="Compiling.html#Compiling">Compiling</a>, | 
 | Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a> | 
 | <hr> | 
 | </div> | 
 |  | 
 | <h2 class="chapter">3 Executing the Program</h2> | 
 |  | 
 | <p>Once the program is compiled for profiling, you must run it in order to | 
 | generate the information that <code>gprof</code> needs.  Simply run the program | 
 | as usual, using the normal arguments, file names, etc.  The program should | 
 | run normally, producing the same output as usual.  It will, however, run | 
 | somewhat slower than normal because of the time spent collecting and | 
 | writing the profile data. | 
 |  | 
 |    <p>The way you run the program—the arguments and input that you give | 
 | it—may have a dramatic effect on what the profile information shows.  The | 
 | profile data will describe the parts of the program that were activated for | 
 | the particular input you use.  For example, if the first command you give | 
 | to your program is to quit, the profile data will show the time used in | 
 | initialization and in cleanup, but not much else. | 
 |  | 
 |    <p>Your program will write the profile data into a file called <samp><span class="file">gmon.out</span></samp> | 
 | just before exiting.  If there is already a file called <samp><span class="file">gmon.out</span></samp>, | 
 | its contents are overwritten.  There is currently no way to tell the | 
 | program to write the profile data under a different name, but you can rename | 
 | the file afterwards if you are concerned that it may be overwritten. | 
 |  | 
 |    <p>In order to write the <samp><span class="file">gmon.out</span></samp> file properly, your program must exit | 
 | normally: by returning from <code>main</code> or by calling <code>exit</code>.  Calling | 
 | the low-level function <code>_exit</code> does not write the profile data, and | 
 | neither does abnormal termination due to an unhandled signal. | 
 |  | 
 |    <p>The <samp><span class="file">gmon.out</span></samp> file is written in the program's <em>current working | 
 | directory</em> at the time it exits.  This means that if your program calls | 
 | <code>chdir</code>, the <samp><span class="file">gmon.out</span></samp> file will be left in the last directory | 
 | your program <code>chdir</code>'d to.  If you don't have permission to write in | 
 | this directory, the file is not written, and you will get an error message. | 
 |  | 
 |    <p>Older versions of the <span class="sc">gnu</span> profiling library may also write a file | 
 | called <samp><span class="file">bb.out</span></samp>.  This file, if present, contains an human-readable | 
 | listing of the basic-block execution counts.  Unfortunately, the | 
 | appearance of a human-readable <samp><span class="file">bb.out</span></samp> means the basic-block | 
 | counts didn't get written into <samp><span class="file">gmon.out</span></samp>.  | 
 | The Perl script <code>bbconv.pl</code>, included with the <code>gprof</code> | 
 | source distribution, will convert a <samp><span class="file">bb.out</span></samp> file into | 
 | a format readable by <code>gprof</code>.  Invoke it like this: | 
 |  | 
 | <pre class="smallexample">     bbconv.pl < bb.out > <var>bh-data</var> | 
 | </pre> | 
 |    <p>This translates the information in <samp><span class="file">bb.out</span></samp> into a form that | 
 | <code>gprof</code> can understand.  But you still need to tell <code>gprof</code> | 
 | about the existence of this translated information.  To do that, include | 
 | <var>bb-data</var> on the <code>gprof</code> command line, <em>along with | 
 | </em><samp><span class="file">gmon.out</span></samp>, like this: | 
 |  | 
 | <pre class="smallexample">     gprof <var>options</var> <var>executable-file</var> gmon.out <var>bb-data</var> [<var>yet-more-profile-data-files</var>...] [> <var>outfile</var>] | 
 | </pre> | 
 |    </body></html> | 
 |  |