%PDF- %PDF-
Direktori : /usr/share/doc/python-docs-2.6.6/html/library/ |
Current File : //usr/share/doc/python-docs-2.6.6/html/library/trace.html |
<!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>