Sophie

Sophie

distrib > Fedora > 17 > i386 > media > updates > by-pkgid > 675c8c8167236dfcf8d66da674f931e8 > files > 1509

erlang-doc-R15B-03.3.fc17.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css">
<title>Erlang -- eprof</title>
</head>
<body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container">
<script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript">
            <!--
              function getWinHeight() {
                var myHeight = 0;
                if( typeof( window.innerHeight ) == 'number' ) {
                  //Non-IE
                  myHeight = window.innerHeight;
                } else if( document.documentElement && ( document.documentElement.clientWidth ||
                                                         document.documentElement.clientHeight ) ) {
                  //IE 6+ in 'standards compliant mode'
                  myHeight = document.documentElement.clientHeight;
                } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
                  //IE 4 compatible
                  myHeight = document.body.clientHeight;
                }
                return myHeight;
              }

              function setscrollpos() {
                var objf=document.getElementById('loadscrollpos');
                 document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2;
              }

              function addEvent(obj, evType, fn){
                if (obj.addEventListener){
                obj.addEventListener(evType, fn, true);
                return true;
              } else if (obj.attachEvent){
                var r = obj.attachEvent("on"+evType, fn);
                return r;
              } else {
                return false;
              }
             }

             addEvent(window, 'load', setscrollpos);

             //--></script><div id="leftnav"><div class="innertube">
<img alt="Erlang logo" src="../../../../doc/erlang-logo.png"><br><small><a href="users_guide.html">User's Guide</a><br><a href="index.html">Reference Manual</a><br><a href="release_notes.html">Release Notes</a><br><a href="../pdf/tools-2.6.8.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>Tools</strong><br><strong>Reference Manual</strong><br><small>Version 2.6.8</small></p>
<br><a href="javascript:openAllFlips()">Expand All</a><br><a href="javascript:closeAllFlips()">Contract All</a><p><small><strong>Table of Contents</strong></small></p>
<ul class="flipMenu">
<li id="no" title="cover " expanded="false">cover<ul>
<li><a href="cover.html">
                  Top of manual page
                </a></li>
<li title="start-0"><a href="cover.html#start-0">start/0</a></li>
<li title="start-1"><a href="cover.html#start-1">start/1</a></li>
<li title="compile-1"><a href="cover.html#compile-1">compile/1</a></li>
<li title="compile-2"><a href="cover.html#compile-2">compile/2</a></li>
<li title="compile_module-1"><a href="cover.html#compile_module-1">compile_module/1</a></li>
<li title="compile_module-2"><a href="cover.html#compile_module-2">compile_module/2</a></li>
<li title="compile_directory-0"><a href="cover.html#compile_directory-0">compile_directory/0</a></li>
<li title="compile_directory-1"><a href="cover.html#compile_directory-1">compile_directory/1</a></li>
<li title="compile_directory-2"><a href="cover.html#compile_directory-2">compile_directory/2</a></li>
<li title="compile_beam-1"><a href="cover.html#compile_beam-1">compile_beam/1</a></li>
<li title="compile_beam_directory-0"><a href="cover.html#compile_beam_directory-0">compile_beam_directory/0</a></li>
<li title="compile_beam_directory-1"><a href="cover.html#compile_beam_directory-1">compile_beam_directory/1</a></li>
<li title="analyse-1"><a href="cover.html#analyse-1">analyse/1</a></li>
<li title="analyse-2"><a href="cover.html#analyse-2">analyse/2</a></li>
<li title="analyse-2"><a href="cover.html#analyse-2">analyse/2</a></li>
<li title="analyse-3"><a href="cover.html#analyse-3">analyse/3</a></li>
<li title="analyse_to_file-1"><a href="cover.html#analyse_to_file-1">analyse_to_file/1</a></li>
<li title="analyse_to_file-2"><a href="cover.html#analyse_to_file-2">analyse_to_file/2</a></li>
<li title="analyse_to_file-2"><a href="cover.html#analyse_to_file-2">analyse_to_file/2</a></li>
<li title="analyse_to_file-3"><a href="cover.html#analyse_to_file-3">analyse_to_file/3</a></li>
<li title="async_analyse_to_file-1"><a href="cover.html#async_analyse_to_file-1">async_analyse_to_file/1</a></li>
<li title="async_analyse_to_file-2"><a href="cover.html#async_analyse_to_file-2">async_analyse_to_file/2</a></li>
<li title="async_analyse_to_file-2"><a href="cover.html#async_analyse_to_file-2">async_analyse_to_file/2</a></li>
<li title="async_analyse_to_file-3"><a href="cover.html#async_analyse_to_file-3">async_analyse_to_file/3</a></li>
<li title="modules-0"><a href="cover.html#modules-0">modules/0</a></li>
<li title="imported_modules-0"><a href="cover.html#imported_modules-0">imported_modules/0</a></li>
<li title="imported-0"><a href="cover.html#imported-0">imported/0</a></li>
<li title="which_nodes-0"><a href="cover.html#which_nodes-0">which_nodes/0</a></li>
<li title="is_compiled-1"><a href="cover.html#is_compiled-1">is_compiled/1</a></li>
<li title="reset-1"><a href="cover.html#reset-1">reset/1</a></li>
<li title="reset-0"><a href="cover.html#reset-0">reset/0</a></li>
<li title="export-1"><a href="cover.html#export-1">export/1</a></li>
<li title="export-2"><a href="cover.html#export-2">export/2</a></li>
<li title="import-1"><a href="cover.html#import-1">import/1</a></li>
<li title="stop-0"><a href="cover.html#stop-0">stop/0</a></li>
<li title="stop-1"><a href="cover.html#stop-1">stop/1</a></li>
</ul>
</li>
<li id="no" title="cprof " expanded="false">cprof<ul>
<li><a href="cprof.html">
                  Top of manual page
                </a></li>
<li title="analyse-0"><a href="cprof.html#analyse-0">analyse/0</a></li>
<li title="analyse-1"><a href="cprof.html#analyse-1">analyse/1</a></li>
<li title="analyse-1"><a href="cprof.html#analyse-1">analyse/1</a></li>
<li title="analyse-2"><a href="cprof.html#analyse-2">analyse/2</a></li>
<li title="pause-0"><a href="cprof.html#pause-0">pause/0</a></li>
<li title="pause-1"><a href="cprof.html#pause-1">pause/1</a></li>
<li title="pause-2"><a href="cprof.html#pause-2">pause/2</a></li>
<li title="pause-3"><a href="cprof.html#pause-3">pause/3</a></li>
<li title="restart-0"><a href="cprof.html#restart-0">restart/0</a></li>
<li title="restart-1"><a href="cprof.html#restart-1">restart/1</a></li>
<li title="restart-2"><a href="cprof.html#restart-2">restart/2</a></li>
<li title="restart-3"><a href="cprof.html#restart-3">restart/3</a></li>
<li title="start-0"><a href="cprof.html#start-0">start/0</a></li>
<li title="start-1"><a href="cprof.html#start-1">start/1</a></li>
<li title="start-2"><a href="cprof.html#start-2">start/2</a></li>
<li title="start-3"><a href="cprof.html#start-3">start/3</a></li>
<li title="stop-0"><a href="cprof.html#stop-0">stop/0</a></li>
<li title="stop-1"><a href="cprof.html#stop-1">stop/1</a></li>
<li title="stop-2"><a href="cprof.html#stop-2">stop/2</a></li>
<li title="stop-3"><a href="cprof.html#stop-3">stop/3</a></li>
</ul>
</li>
<li id="loadscrollpos" title="eprof " expanded="true">eprof<ul>
<li><a href="eprof.html">
                  Top of manual page
                </a></li>
<li title="start-0"><a href="eprof.html#start-0">start/0</a></li>
<li title="start_profiling-1"><a href="eprof.html#start_profiling-1">start_profiling/1</a></li>
<li title="start_profiling-2"><a href="eprof.html#start_profiling-2">start_profiling/2</a></li>
<li title="stop_profiling-0"><a href="eprof.html#stop_profiling-0">stop_profiling/0</a></li>
<li title="profile-1"><a href="eprof.html#profile-1">profile/1</a></li>
<li title="profile-1"><a href="eprof.html#profile-1">profile/1</a></li>
<li title="profile-2"><a href="eprof.html#profile-2">profile/2</a></li>
<li title="profile-3"><a href="eprof.html#profile-3">profile/3</a></li>
<li title="profile-4"><a href="eprof.html#profile-4">profile/4</a></li>
<li title="profile-5"><a href="eprof.html#profile-5">profile/5</a></li>
<li title="analyze-0"><a href="eprof.html#analyze-0">analyze/0</a></li>
<li title="analyze-1"><a href="eprof.html#analyze-1">analyze/1</a></li>
<li title="analyze-2"><a href="eprof.html#analyze-2">analyze/2</a></li>
<li title="log-1"><a href="eprof.html#log-1">log/1</a></li>
<li title="stop-0"><a href="eprof.html#stop-0">stop/0</a></li>
</ul>
</li>
<li title="erlang.el"><a href="erlang.el.html">erlang.el</a></li>
<li id="no" title="fprof " expanded="false">fprof<ul>
<li><a href="fprof.html">
                  Top of manual page
                </a></li>
<li title="start-0"><a href="fprof.html#start-0">start/0</a></li>
<li title="stop-0"><a href="fprof.html#stop-0">stop/0</a></li>
<li title="stop-1"><a href="fprof.html#stop-1">stop/1</a></li>
<li title="apply-2"><a href="fprof.html#apply-2">apply/2</a></li>
<li title="apply-3"><a href="fprof.html#apply-3">apply/3</a></li>
<li title="apply-3"><a href="fprof.html#apply-3">apply/3</a></li>
<li title="apply-4"><a href="fprof.html#apply-4">apply/4</a></li>
<li title="trace-2"><a href="fprof.html#trace-2">trace/2</a></li>
<li title="trace-2"><a href="fprof.html#trace-2">trace/2</a></li>
<li title="trace-2"><a href="fprof.html#trace-2">trace/2</a></li>
<li title="trace-1"><a href="fprof.html#trace-1">trace/1</a></li>
<li title="trace-1"><a href="fprof.html#trace-1">trace/1</a></li>
<li title="trace-1"><a href="fprof.html#trace-1">trace/1</a></li>
<li title="trace-1"><a href="fprof.html#trace-1">trace/1</a></li>
<li title="profile-0"><a href="fprof.html#profile-0">profile/0</a></li>
<li title="profile-2"><a href="fprof.html#profile-2">profile/2</a></li>
<li title="profile-1"><a href="fprof.html#profile-1">profile/1</a></li>
<li title="profile-1"><a href="fprof.html#profile-1">profile/1</a></li>
<li title="profile-1"><a href="fprof.html#profile-1">profile/1</a></li>
<li title="analyse-0"><a href="fprof.html#analyse-0">analyse/0</a></li>
<li title="analyse-2"><a href="fprof.html#analyse-2">analyse/2</a></li>
<li title="analyse-1"><a href="fprof.html#analyse-1">analyse/1</a></li>
<li title="analyse-1"><a href="fprof.html#analyse-1">analyse/1</a></li>
<li title="analyse-1"><a href="fprof.html#analyse-1">analyse/1</a></li>
</ul>
</li>
<li id="no" title="instrument " expanded="false">instrument<ul>
<li><a href="instrument.html">
                  Top of manual page
                </a></li>
<li title="allocator_descr-2"><a href="instrument.html#allocator_descr-2">allocator_descr/2</a></li>
<li title="block_header_size-1"><a href="instrument.html#block_header_size-1">block_header_size/1</a></li>
<li title="class_descr-2"><a href="instrument.html#class_descr-2">class_descr/2</a></li>
<li title="descr-1"><a href="instrument.html#descr-1">descr/1</a></li>
<li title="holes-1"><a href="instrument.html#holes-1">holes/1</a></li>
<li title="mem_limits-1"><a href="instrument.html#mem_limits-1">mem_limits/1</a></li>
<li title="memory_data-0"><a href="instrument.html#memory_data-0">memory_data/0</a></li>
<li title="memory_status-1"><a href="instrument.html#memory_status-1">memory_status/1</a></li>
<li title="read_memory_data-1"><a href="instrument.html#read_memory_data-1">read_memory_data/1</a></li>
<li title="read_memory_status-1"><a href="instrument.html#read_memory_status-1">read_memory_status/1</a></li>
<li title="sort-1"><a href="instrument.html#sort-1">sort/1</a></li>
<li title="store_memory_data-1"><a href="instrument.html#store_memory_data-1">store_memory_data/1</a></li>
<li title="store_memory_status-1"><a href="instrument.html#store_memory_status-1">store_memory_status/1</a></li>
<li title="sum_blocks-1"><a href="instrument.html#sum_blocks-1">sum_blocks/1</a></li>
<li title="type_descr-2"><a href="instrument.html#type_descr-2">type_descr/2</a></li>
<li title="type_no_range-1"><a href="instrument.html#type_no_range-1">type_no_range/1</a></li>
</ul>
</li>
<li id="no" title="lcnt " expanded="false">lcnt<ul>
<li><a href="lcnt.html">
                  Top of manual page
                </a></li>
<li title="start-0"><a href="lcnt.html#start-0">start/0</a></li>
<li title="stop-0"><a href="lcnt.html#stop-0">stop/0</a></li>
<li title="collect-0"><a href="lcnt.html#collect-0">collect/0</a></li>
<li title="collect-1"><a href="lcnt.html#collect-1">collect/1</a></li>
<li title="clear-0"><a href="lcnt.html#clear-0">clear/0</a></li>
<li title="clear-1"><a href="lcnt.html#clear-1">clear/1</a></li>
<li title="conflicts-0"><a href="lcnt.html#conflicts-0">conflicts/0</a></li>
<li title="conflicts-1"><a href="lcnt.html#conflicts-1">conflicts/1</a></li>
<li title="locations-0"><a href="lcnt.html#locations-0">locations/0</a></li>
<li title="locations-1"><a href="lcnt.html#locations-1">locations/1</a></li>
<li title="inspect-1"><a href="lcnt.html#inspect-1">inspect/1</a></li>
<li title="inspect-2"><a href="lcnt.html#inspect-2">inspect/2</a></li>
<li title="information-0"><a href="lcnt.html#information-0">information/0</a></li>
<li title="swap_pid_keys-0"><a href="lcnt.html#swap_pid_keys-0">swap_pid_keys/0</a></li>
<li title="load-1"><a href="lcnt.html#load-1">load/1</a></li>
<li title="save-1"><a href="lcnt.html#save-1">save/1</a></li>
<li title="apply-1"><a href="lcnt.html#apply-1">apply/1</a></li>
<li title="apply-2"><a href="lcnt.html#apply-2">apply/2</a></li>
<li title="apply-3"><a href="lcnt.html#apply-3">apply/3</a></li>
<li title="pid-2"><a href="lcnt.html#pid-2">pid/2</a></li>
<li title="pid-3"><a href="lcnt.html#pid-3">pid/3</a></li>
<li title="port-1"><a href="lcnt.html#port-1">port/1</a></li>
<li title="port-2"><a href="lcnt.html#port-2">port/2</a></li>
<li title="rt_collect-0"><a href="lcnt.html#rt_collect-0">rt_collect/0</a></li>
<li title="rt_collect-1"><a href="lcnt.html#rt_collect-1">rt_collect/1</a></li>
<li title="rt_clear-0"><a href="lcnt.html#rt_clear-0">rt_clear/0</a></li>
<li title="rt_clear-1"><a href="lcnt.html#rt_clear-1">rt_clear/1</a></li>
<li title="rt_opt-1"><a href="lcnt.html#rt_opt-1">rt_opt/1</a></li>
<li title="rt_opt-2"><a href="lcnt.html#rt_opt-2">rt_opt/2</a></li>
</ul>
</li>
<li id="no" title="make " expanded="false">make<ul>
<li><a href="make.html">
                  Top of manual page
                </a></li>
<li title="all-0"><a href="make.html#all-0">all/0</a></li>
<li title="all-1"><a href="make.html#all-1">all/1</a></li>
<li title="files-1"><a href="make.html#files-1">files/1</a></li>
<li title="files-2"><a href="make.html#files-2">files/2</a></li>
</ul>
</li>
<li id="no" title="tags " expanded="false">tags<ul>
<li><a href="tags.html">
                  Top of manual page
                </a></li>
<li title="file-1"><a href="tags.html#file-1">file/1</a></li>
<li title="files-1"><a href="tags.html#files-1">files/1</a></li>
<li title="dir-1"><a href="tags.html#dir-1">dir/1</a></li>
<li title="dirs-1"><a href="tags.html#dirs-1">dirs/1</a></li>
<li title="subdir-1"><a href="tags.html#subdir-1">subdir/1</a></li>
<li title="subdirs-1"><a href="tags.html#subdirs-1">subdirs/1</a></li>
<li title="root-1"><a href="tags.html#root-1">root/1</a></li>
</ul>
</li>
<li id="no" title="xref " expanded="false">xref<ul>
<li><a href="xref.html">
                  Top of manual page
                </a></li>
<li title="add_application-2"><a href="xref.html#add_application-2">add_application/2</a></li>
<li title="add_directory-2"><a href="xref.html#add_directory-2">add_directory/2</a></li>
<li title="add_module-2"><a href="xref.html#add_module-2">add_module/2</a></li>
<li title="add_release-2"><a href="xref.html#add_release-2">add_release/2</a></li>
<li title="analyze-2"><a href="xref.html#analyze-2">analyze/2</a></li>
<li title="d-1"><a href="xref.html#d-1">d/1</a></li>
<li title="forget-1"><a href="xref.html#forget-1">forget/1</a></li>
<li title="forget-2"><a href="xref.html#forget-2">forget/2</a></li>
<li title="format_error-1"><a href="xref.html#format_error-1">format_error/1</a></li>
<li title="get_default-1"><a href="xref.html#get_default-1">get_default/1</a></li>
<li title="get_default-2"><a href="xref.html#get_default-2">get_default/2</a></li>
<li title="get_library_path-1"><a href="xref.html#get_library_path-1">get_library_path/1</a></li>
<li title="info-1"><a href="xref.html#info-1">info/1</a></li>
<li title="info-2"><a href="xref.html#info-2">info/2</a></li>
<li title="info-3"><a href="xref.html#info-3">info/3</a></li>
<li title="m-1"><a href="xref.html#m-1">m/1</a></li>
<li title="m-1"><a href="xref.html#m-1">m/1</a></li>
<li title="q-2"><a href="xref.html#q-2">q/2</a></li>
<li title="remove_application-2"><a href="xref.html#remove_application-2">remove_application/2</a></li>
<li title="remove_module-2"><a href="xref.html#remove_module-2">remove_module/2</a></li>
<li title="remove_release-2"><a href="xref.html#remove_release-2">remove_release/2</a></li>
<li title="replace_application-3"><a href="xref.html#replace_application-3">replace_application/3</a></li>
<li title="replace_module-3"><a href="xref.html#replace_module-3">replace_module/3</a></li>
<li title="set_default-3"><a href="xref.html#set_default-3">set_default/3</a></li>
<li title="set_default-2"><a href="xref.html#set_default-2">set_default/2</a></li>
<li title="set_library_path-2"><a href="xref.html#set_library_path-2">set_library_path/2</a></li>
<li title="start-1"><a href="xref.html#start-1">start/1</a></li>
<li title="start-2"><a href="xref.html#start-2">start/2</a></li>
<li title="stop-1"><a href="xref.html#stop-1">stop/1</a></li>
<li title="update-1"><a href="xref.html#update-1">update/1</a></li>
<li title="variables-1"><a href="xref.html#variables-1">variables/1</a></li>
</ul>
</li>
</ul>
</div></div>
<div id="content">
<div class="innertube">
<!-- refpage --><center><h1>eprof</h1></center>
  
  <h3>MODULE</h3>
<div class="REFBODY">eprof</div>
  <h3>MODULE SUMMARY</h3>
<div class="REFBODY">A Time Profiling Tool for Erlang</div>
  <h3>DESCRIPTION</h3>
<div class="REFBODY"><p>
    <p>The module <span class="code">eprof</span> provides a set of functions for time
      profiling of Erlang programs to find out how the execution time is
      used. The profiling is done using the Erlang trace BIFs. Tracing of
      local function calls for a specified set of processes is enabled when
      profiling is begun, and disabled when profiling is stopped.</p>
    <p>When using Eprof expect a slowdown in program execution.</p>
  </p></div>
  <h3>EXPORTS</h3>
    <p><a name="start-0"><span class="bold_code">start() -&gt; {ok,Pid} | {error,Reason}</span></a><br></p>
<div class="REFBODY">
<p>Types:</p>
        <div class="REFTYPES">
<span class="bold_code">Pid = pid()</span><br>
</div>
        <div class="REFTYPES">
<span class="bold_code">Reason = {already_started,Pid}</span><br>
</div>
      </div>
<div class="REFBODY"><p>
        <p>Starts the Eprof server which holds the internal state of the collected data.</p>
      </p></div>
    <p><a name="start_profiling-1"><span class="bold_code">start_profiling(Rootset) -&gt; profiling | {error, Reason}</span></a><br><a name="start_profiling-2"><span class="bold_code">start_profiling(Rootset,Pattern) -&gt; profiling | {error, Reason}</span></a><br></p>
<div class="REFBODY">
<p>Types:</p>
        <div class="REFTYPES">
<span class="bold_code">Rootset = [atom() | pid()]</span><br>
</div>
	<div class="REFTYPES">
<span class="bold_code">Pattern = {Module, Function, Arity}</span><br>
</div>
	<div class="REFTYPES">
<span class="bold_code">Module = Function = atom()</span><br>
</div>
	<div class="REFTYPES">
<span class="bold_code">Arity = integer()</span><br>
</div>
        <div class="REFTYPES">
<span class="bold_code">Reason = term()</span><br>
</div>
      </div>
<div class="REFBODY"><p>
        <p>Starts profiling for the processes in <span class="code">Rootset</span> (and any new
          processes spawned from them). Information about activity in any
          profiled process is stored in the Eprof database.</p>
        <p><span class="code">Rootset</span> is a list of pids and registered names.</p>
        <p>The function returns <span class="code">profiling</span> if tracing could be enabled
          for all processes in <span class="code">Rootset</span>, or <span class="code">error</span> otherwise.</p>
        <p>A pattern can be selected to narrow the profiling. For instance a
          specific module can be selected, and only the code executed in that
          module will be profiled.</p>
      </p></div>
    <p><a name="stop_profiling-0"><span class="bold_code">stop_profiling() -&gt; profiling_stopped | profiling_already_stopped</span></a><br></p>
<div class="REFBODY"><p>
        <p>Stops profiling started with <span class="code">start_profiling/1</span> or
          <span class="code">profile/1</span>.</p>
      </p></div>
    <p><a name="profile-1"><span class="bold_code">profile(Fun) -&gt; profiling | {error, Reason}</span></a><br><a name="profile-1"><span class="bold_code">profile(Rootset) -&gt; profiling | {error, Reason}</span></a><br><a name="profile-2"><span class="bold_code">profile(Rootset,Fun) -&gt; {ok, Value} | {error,Reason}</span></a><br><a name="profile-3"><span class="bold_code">profile(Rootset,Fun,Pattern) -&gt; {ok, Value} | {error, Reason}</span></a><br><a name="profile-4"><span class="bold_code">profile(Rootset,Module,Function,Args) -&gt; {ok, Value} | {error, Reason}</span></a><br><a name="profile-5"><span class="bold_code">profile(Rootset,Module,Function,Args,Pattern) -&gt; {ok, Value} | {error, Reason}</span></a><br></p>
<div class="REFBODY">
<p>Types:</p>
        <div class="REFTYPES">
<span class="bold_code">Rootset = [atom() | pid()]</span><br>
</div>
        <div class="REFTYPES">
<span class="bold_code">Fun = fun() -&gt; term()</span><br>
</div>
	<div class="REFTYPES">
<span class="bold_code">Pattern = {Module, Function, Arity}</span><br>
</div>
        <div class="REFTYPES">
<span class="bold_code">Module = Function = atom()</span><br>
</div>
        <div class="REFTYPES">
<span class="bold_code">Args = [term()]</span><br>
</div>
	<div class="REFTYPES">
<span class="bold_code">Arity = integer()</span><br>
</div>
        <div class="REFTYPES">
<span class="bold_code">Value = Reason = term()</span><br>
</div>
      </div>
<div class="REFBODY"><p>
        <p>This function first spawns a process <span class="code">P</span> which evaluates
          <span class="code">Fun()</span> or <span class="code">apply(Module,Function,Args)</span>. Then, it
          starts profiling for <span class="code">P</span> and the processes in <span class="code">Rootset</span>
          (and any new processes spawned from them). Information about
          activity in any profiled process is stored in the Eprof database.</p>
        <p><span class="code">Rootset</span> is a list of pids and registered names.</p>
        <p>If tracing could be enabled for <span class="code">P</span> and all processes in
          <span class="code">Rootset</span>, the function returns <span class="code">{ok,Value}</span> when
          <span class="code">Fun()</span>/<span class="code">apply</span> returns with the value <span class="code">Value</span>, or
          <span class="code">{error,Reason}</span> if <span class="code">Fun()</span>/<span class="code">apply</span> fails with
	  exit reason <span class="code">Reason</span>. Otherwise it returns <span class="code">{error, Reason}</span>
          immediately.</p>
        <p>The programmer must ensure that the function given as argument
          is truly synchronous and that no work continues after
          the function has returned a value.</p>
      </p></div>
    <p><a name="analyze-0"><span class="bold_code">analyze() -&gt; ok</span></a><br><a name="analyze-1"><span class="bold_code">analyze(Type) -&gt; ok</span></a><br><a name="analyze-2"><span class="bold_code">analyze(Type,Options) -&gt; ok</span></a><br></p>
<div class="REFBODY">
<p>Types:</p>
        <div class="REFTYPES">
<span class="bold_code">Type = procs | total</span><br>
</div>
	<div class="REFTYPES">
<span class="bold_code">Options = [{filter, Filter} | {sort, Sort}</span><br>
</div>
	<div class="REFTYPES">
<span class="bold_code">Filter = [{calls, integer()} | {time, float()}]</span><br>
</div>
	<div class="REFTYPES">
<span class="bold_code">Sort = time | calls | mfa</span><br>
</div>
      </div>
<div class="REFBODY"><p>
        <p>Call this function when profiling has been stopped to display
          the results per process, that is:</p>
        <ul>
          <li>how much time has been used by each process, and</li>
          <li>in which function calls this time has been spent.</li>
        </ul>
	<p>Call <span class="code">analyze</span> with <span class="code">total</span> option when profiling has been stopped to display
          the results per function call, that is in which function calls
          the time has been spent.</p>
        <p>Time is shown as percentage of total time and as absolute time.</p>
      </p></div>
    <p><a name="log-1"><span class="bold_code">log(File) -&gt; ok</span></a><br></p>
<div class="REFBODY">
<p>Types:</p>
        <div class="REFTYPES">
<span class="bold_code">File = atom() | string()</span><br>
</div>
      </div>
<div class="REFBODY"><p>
        <p>This function ensures that the results displayed by
          <span class="code">analyze/0,1,2</span> are printed both to the file
          <span class="code">File</span> and the screen.</p>
      </p></div>
    <p><a name="stop-0"><span class="bold_code">stop() -&gt; stopped</span></a><br></p>
<div class="REFBODY"><p>
        <p>Stops the Eprof server.</p>
      </p></div>
  
</div>
<div class="footer">
<hr>
<p>Copyright © 1997-2012 Ericsson AB. All Rights Reserved.</p>
</div>
</div>
</div></body>
</html>