<!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 -- cprof</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="loadscrollpos" title="cprof " expanded="true">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="no" title="eprof " expanded="false">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>cprof</h1></center> <h3>MODULE</h3> <div class="REFBODY">cprof</div> <h3>MODULE SUMMARY</h3> <div class="REFBODY">A simple Call Count Profiling Tool using breakpoints for minimal runtime performance impact.</div> <h3>DESCRIPTION</h3> <div class="REFBODY"><p> <p>The <span class="code">cprof</span> module is used to profile a program to find out how many times different functions are called. Breakpoints similar to local call trace, but containing a counter, are used to minimise runtime performance impact. </p> <p>Since breakpoints are used there is no need for special compilation of any module to be profiled. For now these breakpoints can only be set on BEAM code so BIFs cannot be call count traced. </p> <p>The size of the call counters is the host machine word size. One bit is used when pausing the counter, so the maximum counter value for a 32-bit host is 2147483647. </p> <p>The profiling result is delivered as a term containing a sorted list of entries, one per module. Each module entry contains a sorted list of functions. The sorting order in both cases is of decreasing call count. </p> <p>Call count tracing is very lightweight compared to other forms of tracing since no trace message has to be generated. Some measurements indicates performance degradation in the vicinity of 10 percent. <a name="analyse"></a> </p> </p></div> <h3>EXPORTS</h3> <p><a name="analyse-0"><span class="bold_code">analyse() -> {AllCallCount, ModAnalysisList}</span></a><br><a name="analyse-1"><span class="bold_code">analyse(Limit) -> {AllCallCount, ModAnalysisList}</span></a><br><a name="analyse-1"><span class="bold_code">analyse(Mod) -> ModAnlysis</span></a><br><a name="analyse-2"><span class="bold_code">analyse(Mod, Limit) -> ModAnalysis</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Limit = integer()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Mod = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">AllCallCount = integer()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">ModAnalysisList = [ModAnalysis]</span><br> </div> <div class="REFTYPES"> <span class="bold_code">ModAnalysis = {Mod, ModCallCount, FuncAnalysisList}</span><br> </div> <div class="REFTYPES"> <span class="bold_code">ModCallCount = integer()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">FuncAnalysisList = [{{Mod, Func, Arity}, FuncCallCount}]</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Func = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Arity = integer()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">FuncCallCount = integer()</span><br> </div> </div> <div class="REFBODY"><p> <p>Collects and analyses the call counters presently in the node for either module <span class="code">Mod</span>, or for all modules (except <span class="code">cprof</span> itself), and returns: </p> <dl> <dt><strong><span class="code">FuncAnalysisList</span></strong></dt> <dd>A list of tuples, one for each function in a module, in decreasing <span class="code">FuncCallCount</span> order.</dd> <dt><strong><span class="code">ModCallCount</span></strong></dt> <dd>The sum of <span class="code">FuncCallCount</span> values for all functions in module <span class="code">Mod</span>.</dd> <dt><strong><span class="code">AllCallCount</span></strong></dt> <dd>The sum of <span class="code">ModCallCount</span> values for all modules concerned in <span class="code">ModAnalysisList</span>.</dd> <dt><strong><span class="code">ModAnalysisList</span></strong></dt> <dd>A list of tuples, one for each module except <span class="code">cprof</span>, in decreasing <span class="code">ModCallCount</span> order.</dd> </dl> <p>If call counters are still running while <span class="code">analyse/0..2</span> is executing, you might get an inconsistent result. This happens if the process executing <span class="code">analyse/0..2</span> gets scheduled out so some other process can increment the counters that are being analysed, Calling <span class="code">pause()</span> before analysing takes care of the problem. </p> <p>If the <span class="code">Mod</span> argument is given, the result contains a <span class="code">ModAnalysis</span> tuple for module <span class="code">Mod</span> only, otherwise the result contains one <span class="code">ModAnalysis</span> tuple for all modules returned from <span class="code">code:all_loaded()</span> except <span class="code">cprof</span> itself. </p> <p>All functions with a <span class="code">FuncCallCount</span> lower than <span class="code">Limit</span> are excluded from <span class="code">FuncAnalysisList</span>. They are still included in <span class="code">ModCallCount</span>, though. The default value for <span class="code">Limit</span> is <span class="code">1</span>. <a name="pause_0"></a> </p> </p></div> <p><a name="pause-0"><span class="bold_code">pause() -> integer()</span></a><br></p> <div class="REFBODY"><p> <p>Pause call count tracing for all functions in all modules and stop it for all functions in modules to be loaded. This is the same as <span class="code">(pause({'_','_','_'})+stop({on_load}))</span>. </p> <p>See also <span class="bold_code"><a href="#pause">pause/1..3</a></span> below. <a name="pause"></a> </p> </p></div> <p><a name="pause-1"><span class="bold_code">pause(FuncSpec) -> integer()</span></a><br><a name="pause-2"><span class="bold_code">pause(Mod, Func) -> integer()</span></a><br><a name="pause-3"><span class="bold_code">pause(Mod, Func, Arity) -> integer()</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">FuncSpec = Mod | {Mod,Func,Arity}, {FS}</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Mod = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Func = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Arity = integer()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">FS = term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Pause call counters for matching functions in matching modules. The <span class="code">FS</span> argument can be used to specify the first argument to <span class="code">erlang:trace_pattern/3</span>. See erlang(3). </p> <p>The call counters for all matching functions that has got call count breakpoints are paused at their current count. </p> <p>Return the number of matching functions that can have call count breakpoints, the same as <span class="code">start/0..3</span> with the same arguments would have returned. <a name="restart"></a> </p> </p></div> <p><a name="restart-0"><span class="bold_code">restart() -> integer()</span></a><br><a name="restart-1"><span class="bold_code">restart(FuncSpec) -> integer()</span></a><br><a name="restart-2"><span class="bold_code">restart(Mod, Func) -> integer()</span></a><br><a name="restart-3"><span class="bold_code">restart(Mod, Func, Arity) -> integer()</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">FuncSpec = Mod | {Mod,Func,Arity}, {FS}</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Mod = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Func = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Arity = integer()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">FS = term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Restart call counters for the matching functions in matching modules that are call count traced. The <span class="code">FS</span> argument can be used to specify the first argument to <span class="code">erlang:trace_pattern/3</span>. See erlang(3). </p> <p>The call counters for all matching functions that has got call count breakpoints are set to zero and running. </p> <p>Return the number of matching functions that can have call count breakpoints, the same as <span class="code">start/0..3</span> with the same arguments would have returned. <a name="start_0"></a> </p> </p></div> <p><a name="start-0"><span class="bold_code">start() -> integer()</span></a><br></p> <div class="REFBODY"><p> <p>Start call count tracing for all functions in all modules, and also for all functions in modules to be loaded. This is the same as <span class="code">(start({'_','_','_'})+start({on_load}))</span>. </p> <p>See also <span class="bold_code"><a href="#start">start/1..3</a></span> below. <a name="start"></a> </p> </p></div> <p><a name="start-1"><span class="bold_code">start(FuncSpec) -> integer()</span></a><br><a name="start-2"><span class="bold_code">start(Mod, Func) -> integer()</span></a><br><a name="start-3"><span class="bold_code">start(Mod, Func, Arity) -> integer()</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">FuncSpec = Mod | {Mod,Func,Arity}, {FS}</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Mod = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Func = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Arity = integer()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">FS = term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Start call count tracing for matching functions in matching modules. The <span class="code">FS</span> argument can be used to specify the first argument to <span class="code">erlang:trace_pattern/3</span>, for example <span class="code">on_load</span>. See erlang(3). </p> <p>Set call count breakpoints on the matching functions that has no call count breakpoints. Call counters are set to zero and running for all matching functions. </p> <p>Return the number of matching functions that has got call count breakpoints. <a name="stop_0"></a> </p> </p></div> <p><a name="stop-0"><span class="bold_code">stop() -> integer()</span></a><br></p> <div class="REFBODY"><p> <p>Stop call count tracing for all functions in all modules, and also for all functions in modules to be loaded. This is the same as <span class="code">(stop({'_','_','_'})+stop({on_load}))</span>. </p> <p>See also <span class="bold_code"><a href="#stop">stop/1..3</a></span> below. <a name="stop"></a> </p> </p></div> <p><a name="stop-1"><span class="bold_code">stop(FuncSpec) -> integer()</span></a><br><a name="stop-2"><span class="bold_code">stop(Mod, Func) -> integer()</span></a><br><a name="stop-3"><span class="bold_code">stop(Mod, Func, Arity) -> integer()</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">FuncSpec = Mod | {Mod,Func,Arity}, {FS}</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Mod = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Func = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Arity = integer()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">FS = term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Stop call count tracing for matching functions in matching modules. The <span class="code">FS</span> argument can be used to specify the first argument to <span class="code">erlang:trace_pattern/3</span>, for example <span class="code">on_load</span>. See erlang(3). </p> <p>Remove call count breakpoints from the matching functions that has call count breakpoints. </p> <p>Return the number of matching functions that can have call count breakpoints, the same as <span class="code">start/0..3</span> with the same arguments would have returned. </p> </p></div> <h3><a name="id78331">See Also</a></h3> <div class="REFBODY"> <p><span class="bold_code"><a href="eprof.html">eprof</a></span>(3), <span class="bold_code"><a href="fprof.html">fprof</a></span>(3), erlang(3), <span class="bold_code"><a href="cprof_chapter.html">User's Guide</a></span></p> </div> </div> <div class="footer"> <hr> <p>Copyright © 1997-2012 Ericsson AB. All Rights Reserved.</p> </div> </div> </div></body> </html>