<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>26.7. trace — Trace or track Python statement execution — Python v2.6.6 documentation</title>
<link rel="stylesheet" href="../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.6.6',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Python v2.6.6 documentation"
href="../_static/opensearch.xml"/>
<link rel="author" title="About these documents" href="../about.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="top" title="Python v2.6.6 documentation" href="../index.html" />
<link rel="up" title="26. Debugging and Profiling" href="debug.html" />
<link rel="next" title="27. Python Runtime Services" href="python.html" />
<link rel="prev" title="26.6. timeit — Measure execution time of small code snippets" href="timeit.html" />
<link rel="shortcut icon" type="image/png" href="../_static/py.png" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../modindex.html" title="Global Module Index"
accesskey="M">modules</a> |</li>
<li class="right" >
<a href="python.html" title="27. Python Runtime Services"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="timeit.html" title="26.6. timeit — Measure execution time of small code snippets"
accesskey="P">previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="../index.html">Python v2.6.6 documentation</a> »</li>
<li><a href="index.html" >The Python Standard Library</a> »</li>
<li><a href="debug.html" accesskey="U">26. Debugging and Profiling</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="module-trace">
<h1>26.7. <tt class="xref docutils literal"><span class="pre">trace</span></tt> — Trace or track Python statement execution<a class="headerlink" href="#module-trace" title="Permalink to this headline">¶</a></h1>
<p>The <tt class="xref docutils literal"><span class="pre">trace</span></tt> module allows you to trace program execution, generate
annotated statement coverage listings, print caller/callee relationships and
list functions executed during a program run. It can be used in another program
or from the command line.</p>
<div class="section" id="command-line-usage">
<span id="trace-cli"></span><h2>26.7.1. Command Line Usage<a class="headerlink" href="#command-line-usage" title="Permalink to this headline">¶</a></h2>
<p>The <tt class="xref docutils literal"><span class="pre">trace</span></tt> module can be invoked from the command line. It can be as
simple as</p>
<div class="highlight-python"><pre>python -m trace --count -C . somefile.py ...</pre>
</div>
<p>The above will execute <tt class="docutils literal"><span class="pre">somefile.py</span></tt> and generate annotated listings of all
Python modules imported during the execution into the current directory.</p>
<div class="section" id="meta-options">
<h3>26.7.1.1. Meta-options<a class="headerlink" href="#meta-options" title="Permalink to this headline">¶</a></h3>
<p><tt class="docutils literal"><span class="pre">--help</span></tt></p>
<blockquote>
Display usage and exit.</blockquote>
<p><tt class="docutils literal"><span class="pre">--version</span></tt></p>
<blockquote>
Display the version of the module and exit.</blockquote>
</div>
<div class="section" id="main-options">
<h3>26.7.1.2. Main options<a class="headerlink" href="#main-options" title="Permalink to this headline">¶</a></h3>
<p>The <tt class="docutils literal"><span class="pre">--listfuncs</span></tt> option is mutually exclusive with the <tt class="docutils literal"><span class="pre">--trace</span></tt> and
<tt class="docutils literal"><span class="pre">--count</span></tt> options . When <tt class="docutils literal"><span class="pre">--listfuncs</span></tt> is provided, neither <tt class="docutils literal"><span class="pre">--counts</span></tt>
nor <tt class="docutils literal"><span class="pre">--trace</span></tt> are accepted, and vice versa.</p>
<p><tt class="docutils literal"><span class="pre">--count,</span> <span class="pre">-c</span></tt></p>
<blockquote>
Produce a set of annotated listing files upon program completion that shows
how many times each statement was executed.
See also <tt class="docutils literal"><span class="pre">--coverdir</span></tt>, <tt class="docutils literal"><span class="pre">--file</span></tt>, <tt class="docutils literal"><span class="pre">--no-report</span></tt> below.</blockquote>
<p><tt class="docutils literal"><span class="pre">--trace,</span> <span class="pre">-t</span></tt></p>
<blockquote>
Display lines as they are executed.</blockquote>
<p><tt class="docutils literal"><span class="pre">--listfuncs,</span> <span class="pre">-l</span></tt></p>
<blockquote>
Display the functions executed by running the program.</blockquote>
<p><tt class="docutils literal"><span class="pre">--report,</span> <span class="pre">-r</span></tt></p>
<blockquote>
Produce an annotated list from an earlier program run that used the <tt class="docutils literal"><span class="pre">--count</span></tt>
and <tt class="docutils literal"><span class="pre">--file</span></tt> option. Do not execute any code.</blockquote>
<p><tt class="docutils literal"><span class="pre">--trackcalls,</span> <span class="pre">-T</span></tt></p>
<blockquote>
Display the calling relationships exposed by running the program.</blockquote>
</div>
<div class="section" id="modifiers">
<h3>26.7.1.3. Modifiers<a class="headerlink" href="#modifiers" title="Permalink to this headline">¶</a></h3>
<p><tt class="docutils literal"><span class="pre">--file=<file>,</span> <span class="pre">-f</span></tt></p>
<blockquote>
Name of a file to accumulate counts over several tracing runs. Should be used
with the <tt class="docutils literal"><span class="pre">--count</span></tt> option.</blockquote>
<p><tt class="docutils literal"><span class="pre">--coverdir=<dir>,</span> <span class="pre">-C</span></tt></p>
<blockquote>
Directory where the report files go. The coverage report for
<tt class="docutils literal"><span class="pre">package.module</span></tt> is written to file <tt class="docutils literal"><span class="pre">dir/package/module.cover</span></tt>.</blockquote>
<p><tt class="docutils literal"><span class="pre">--missing,</span> <span class="pre">-m</span></tt></p>
<blockquote>
When generating annotated listings, mark lines which were not executed with
‘<tt class="docutils literal"><span class="pre">>>>>>></span></tt>‘.</blockquote>
<p><tt class="docutils literal"><span class="pre">--summary,</span> <span class="pre">-s</span></tt></p>
<blockquote>
When using <tt class="docutils literal"><span class="pre">--count</span></tt> or <tt class="docutils literal"><span class="pre">--report</span></tt>, write a brief summary to
stdout for each file processed.</blockquote>
<p><tt class="docutils literal"><span class="pre">--no-report,</span> <span class="pre">-R</span></tt></p>
<blockquote>
Do not generate annotated listings. This is useful if you intend to make
several runs with <tt class="docutils literal"><span class="pre">--count</span></tt> then produce a single set of annotated
listings at the end.</blockquote>
<p><tt class="docutils literal"><span class="pre">--timing,</span> <span class="pre">-g</span></tt></p>
<blockquote>
Prefix each line with the time since the program started. Only used while
tracing.</blockquote>
</div>
<div class="section" id="filters">
<h3>26.7.1.4. Filters<a class="headerlink" href="#filters" title="Permalink to this headline">¶</a></h3>
<p>These options may be repeated multiple times.</p>
<p><tt class="docutils literal"><span class="pre">--ignore-module=<mod></span></tt></p>
<blockquote>
Accepts comma separated list of module names. Ignore each of the named
modules and its submodules (if it is a package).</blockquote>
<p><tt class="docutils literal"><span class="pre">--ignore-dir=<dir></span></tt></p>
<blockquote>
Ignore all modules and packages in the named directory and subdirectories
(multiple directories can be joined by <tt class="docutils literal"><span class="pre">os.pathsep</span></tt>).</blockquote>
</div>
</div>
<div class="section" id="programming-interface">
<span id="trace-api"></span><h2>26.7.2. Programming Interface<a class="headerlink" href="#programming-interface" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="trace.Trace">
<em class="property">class </em><tt class="descclassname">trace.</tt><tt class="descname">Trace</tt><big>(</big><em>count=1</em>, <em>trace=1</em>, <em>countfuncs=0</em>, <em>countcallers=0</em>, <em>ignoremods=()</em>, <em>ignoredirs=()</em>, <em>infile=None</em>, <em>outfile=None</em>, <em>timing=False</em><big>)</big><a class="headerlink" href="#trace.Trace" title="Permalink to this definition">¶</a></dt>
<dd>Create an object to trace execution of a single statement or expression. All
parameters are optional. <em>count</em> enables counting of line numbers. <em>trace</em>
enables line execution tracing. <em>countfuncs</em> enables listing of the functions
called during the run. <em>countcallers</em> enables call relationship tracking.
<em>ignoremods</em> is a list of modules or packages to ignore. <em>ignoredirs</em> is a list
of directories whose modules or packages should be ignored. <em>infile</em> is the
name of the file from which to read stored count information. <em>outfile</em> is
the name of the file in which to write updated count information. <em>timing</em>
enables a timestamp relative to when tracing was started to be displayed.</dd></dl>
<dl class="method">
<dt id="trace.Trace.run">
<tt class="descclassname">Trace.</tt><tt class="descname">run</tt><big>(</big><em>cmd</em><big>)</big><a class="headerlink" href="#trace.Trace.run" title="Permalink to this definition">¶</a></dt>
<dd>Run <em>cmd</em> under control of the <a title="trace.Trace" class="reference internal" href="#trace.Trace"><tt class="xref docutils literal"><span class="pre">Trace</span></tt></a> object with the current tracing parameters.
<em>cmd</em> must be a string or code object, suitable for passing into <tt class="xref docutils literal"><span class="pre">exec()</span></tt>.</dd></dl>
<dl class="method">
<dt id="trace.Trace.runctx">
<tt class="descclassname">Trace.</tt><tt class="descname">runctx</tt><big>(</big><em>cmd</em>, <em>globals=None</em>, <em>locals=None</em><big>)</big><a class="headerlink" href="#trace.Trace.runctx" title="Permalink to this definition">¶</a></dt>
<dd>Run <em>cmd</em> under control of the <a title="trace.Trace" class="reference internal" href="#trace.Trace"><tt class="xref docutils literal"><span class="pre">Trace</span></tt></a> object with the current tracing parameters
in the defined global and local environments. If not defined, <em>globals</em> and
<em>locals</em> default to empty dictionaries.</dd></dl>
<dl class="method">
<dt id="trace.Trace.runfunc">
<tt class="descclassname">Trace.</tt><tt class="descname">runfunc</tt><big>(</big><em>func</em>, <em>*args</em>, <em>**kwds</em><big>)</big><a class="headerlink" href="#trace.Trace.runfunc" title="Permalink to this definition">¶</a></dt>
<dd>Call <em>func</em> with the given arguments under control of the <a title="trace.Trace" class="reference internal" href="#trace.Trace"><tt class="xref docutils literal"><span class="pre">Trace</span></tt></a> object
with the current tracing parameters.</dd></dl>
<dl class="method">
<dt id="trace.Trace.results">
<tt class="descclassname">Trace.</tt><tt class="descname">results</tt><big>(</big><big>)</big><a class="headerlink" href="#trace.Trace.results" title="Permalink to this definition">¶</a></dt>
<dd>Return a <a title="trace.CoverageResults" class="reference internal" href="#trace.CoverageResults"><tt class="xref docutils literal"><span class="pre">CoverageResults</span></tt></a> object that contains the cumulative results
of all previous calls to <tt class="docutils literal"><span class="pre">run</span></tt>, <tt class="docutils literal"><span class="pre">runctx</span></tt> and <tt class="docutils literal"><span class="pre">runfunc</span></tt> for the given
<a title="trace.Trace" class="reference internal" href="#trace.Trace"><tt class="xref docutils literal"><span class="pre">Trace</span></tt></a> instance. Does not reset the accumulated trace results.</dd></dl>
<dl class="class">
<dt id="trace.CoverageResults">
<em class="property">class </em><tt class="descclassname">trace.</tt><tt class="descname">CoverageResults</tt><a class="headerlink" href="#trace.CoverageResults" title="Permalink to this definition">¶</a></dt>
<dd>A container for coverage results, created by <a title="trace.Trace.results" class="reference internal" href="#trace.Trace.results"><tt class="xref docutils literal"><span class="pre">Trace.results()</span></tt></a>. Should not
be created directly by the user.</dd></dl>
<dl class="method">
<dt id="trace.CoverageResults.update">
<tt class="descclassname">CoverageResults.</tt><tt class="descname">update</tt><big>(</big><em>other</em><big>)</big><a class="headerlink" href="#trace.CoverageResults.update" title="Permalink to this definition">¶</a></dt>
<dd>Merge in data from another <a title="trace.CoverageResults" class="reference internal" href="#trace.CoverageResults"><tt class="xref docutils literal"><span class="pre">CoverageResults</span></tt></a> object.</dd></dl>
<dl class="method">
<dt id="trace.CoverageResults.write_results">
<tt class="descclassname">CoverageResults.</tt><tt class="descname">write_results</tt><big>(</big><em>show_missing=True</em>, <em>summary=False</em>, <em>coverdir=None</em><big>)</big><a class="headerlink" href="#trace.CoverageResults.write_results" title="Permalink to this definition">¶</a></dt>
<dd>Write coverage results. Set <em>show_missing</em> to show lines that had no hits.
Set <em>summary</em> to include in the output the coverage summary per module. <em>coverdir</em>
specifies the directory into which the coverage result files will be output.
If <tt class="xref docutils literal"><span class="pre">None</span></tt>, the results for each source file are placed in its directory.</dd></dl>
<p>A simple example demonstrating the use of the programming interface:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">trace</span>
<span class="c"># create a Trace object, telling it what to ignore, and whether to</span>
<span class="c"># do tracing or line-counting or both.</span>
<span class="n">tracer</span> <span class="o">=</span> <span class="n">trace</span><span class="o">.</span><span class="n">Trace</span><span class="p">(</span>
<span class="n">ignoredirs</span><span class="o">=</span><span class="p">[</span><span class="n">sys</span><span class="o">.</span><span class="n">prefix</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">exec_prefix</span><span class="p">],</span>
<span class="n">trace</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="n">count</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="c"># run the new command using the given tracer</span>
<span class="n">tracer</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s">'main()'</span><span class="p">)</span>
<span class="c"># make a report, placing output in /tmp</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">tracer</span><span class="o">.</span><span class="n">results</span><span class="p">()</span>
<span class="n">r</span><span class="o">.</span><span class="n">write_results</span><span class="p">(</span><span class="n">show_missing</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">coverdir</span><span class="o">=</span><span class="s">"/tmp"</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference external" href="#">26.7. <tt class="docutils literal"><span class="pre">trace</span></tt> — Trace or track Python statement execution</a><ul>
<li><a class="reference external" href="#command-line-usage">26.7.1. Command Line Usage</a><ul>
<li><a class="reference external" href="#meta-options">26.7.1.1. Meta-options</a></li>
<li><a class="reference external" href="#main-options">26.7.1.2. Main options</a></li>
<li><a class="reference external" href="#modifiers">26.7.1.3. Modifiers</a></li>
<li><a class="reference external" href="#filters">26.7.1.4. Filters</a></li>
</ul>
</li>
<li><a class="reference external" href="#programming-interface">26.7.2. Programming Interface</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="timeit.html"
title="previous chapter">26.6. <tt class="docutils literal docutils literal docutils literal"><span class="pre">timeit</span></tt> — Measure execution time of small code snippets</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="python.html"
title="next chapter">27. Python Runtime Services</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">Report a Bug</a></li>
<li><a href="../_sources/library/trace.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" size="18" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../modindex.html" title="Global Module Index"
>modules</a> |</li>
<li class="right" >
<a href="python.html" title="27. Python Runtime Services"
>next</a> |</li>
<li class="right" >
<a href="timeit.html" title="26.6. timeit — Measure execution time of small code snippets"
>previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="../index.html">Python v2.6.6 documentation</a> »</li>
<li><a href="index.html" >The Python Standard Library</a> »</li>
<li><a href="debug.html" >26. Debugging and Profiling</a> »</li>
</ul>
</div>
<div class="footer">
© <a href="../copyright.html">Copyright</a> 1990-2011, Python Software Foundation.
<br />
The Python Software Foundation is a non-profit corporation.
<a href="http://www.python.org/psf/donations/">Please donate.</a>
<br />
Last updated on Jul 20, 2011.
<a href="../bugs.html">Found a bug</a>?
<br />
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
</div>
</body>
</html>
Copyright 2K16 - 2K18 Indonesian Hacker Rulez