<!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.6. trace — Trace or track Python statement execution — Python v3.1.1 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: '3.1.1', 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 v3.1.1 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 v3.1.1 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.5. 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.5. 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 v3.1.1 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.6. <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.6.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-python3"><div class="highlight"><pre><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">trace</span> <span class="o">--</span><span class="n">count</span> <span class="n">somefile</span><span class="o">.</span><span class="n">py</span> <span class="o">...</span> </pre></div> </div> <p>The above will generate annotated listings of all Python modules imported during the execution of <tt class="docutils literal"><span class="pre">somefile.py</span></tt>.</p> <p>The following command-line arguments are supported:</p> <dl class="docutils"> <dt><em class="xref">--trace</em>, <em class="xref">-t</em></dt> <dd>Display lines as they are executed.</dd> <dt><em class="xref">--count</em>, <a class="reference external" href="../using/cmdline.html#cmdoption-c"><em class="xref">-c</em></a></dt> <dd>Produce a set of annotated listing files upon program completion that shows how many times each statement was executed.</dd> <dt><em class="xref">--report</em>, <em class="xref">-r</em></dt> <dd>Produce an annotated list from an earlier program run that used the <em class="xref">--count</em> and <em class="xref">--file</em> arguments.</dd> <dt><em class="xref">--no-report</em>, <em class="xref">-R</em></dt> <dd>Do not generate annotated listings. This is useful if you intend to make several runs with <em class="xref">--count</em> then produce a single set of annotated listings at the end.</dd> <dt><em class="xref">--listfuncs</em>, <em class="xref">-l</em></dt> <dd>List the functions executed by running the program.</dd> <dt><em class="xref">--trackcalls</em>, <em class="xref">-T</em></dt> <dd>Generate calling relationships exposed by running the program.</dd> <dt><em class="xref">--file</em>, <em class="xref">-f</em></dt> <dd>Name a file containing (or to contain) counts.</dd> <dt><em class="xref">--coverdir</em>, <em class="xref">-C</em></dt> <dd>Name a directory in which to save annotated listing files.</dd> <dt><em class="xref">--missing</em>, <a class="reference external" href="../using/cmdline.html#cmdoption-m"><em class="xref">-m</em></a></dt> <dd>When generating annotated listings, mark lines which were not executed with ‘<tt class="docutils literal"><span class="pre">>>>>>></span></tt>‘.</dd> <dt><em class="xref">--summary</em>, <a class="reference external" href="../using/cmdline.html#cmdoption-s"><em class="xref">-s</em></a></dt> <dd>When using <em class="xref">--count</em> or <em class="xref">--report</em>, write a brief summary to stdout for each file processed.</dd> <dt><em class="xref">--ignore-module</em></dt> <dd>Accepts comma separated list of module names. Ignore each of the named module and its submodules (if it is a package). May be given multiple times.</dd> <dt><em class="xref">--ignore-dir</em></dt> <dd>Ignore all modules and packages in the named directory and subdirectories (multiple directories can be joined by os.pathsep). May be given multiple times.</dd> </dl> </div> <div class="section" id="programming-interface"> <span id="trace-api"></span><h2>26.6.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><span class="optional">[</span><em>count=1</em><span class="optional">[</span>, <em>trace=1</em><span class="optional">[</span>, <em>countfuncs=0</em><span class="optional">[</span>, <em>countcallers=0</em><span class="optional">[</span>, <em>ignoremods=()</em><span class="optional">[</span>, <em>ignoredirs=()</em><span class="optional">[</span>, <em>infile=None</em><span class="optional">[</span>, <em>outfile=None</em><span class="optional">[</span>, <em>timing=False</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><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 file from which to read stored count information. <em>outfile</em> is a 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 Trace object with the current tracing parameters.</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><span class="optional">[</span>, <em>globals=None</em><span class="optional">[</span>, <em>locals=None</em><span class="optional">]</span><span class="optional">]</span><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 Trace 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> <p>This is a simple example showing the use of this module:</p> <div class="highlight-python3"><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="k">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.6. <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.6.1. Command Line Usage</a></li> <li><a class="reference external" href="#programming-interface">26.6.2. Programming Interface</a></li> </ul> </li> </ul> <h4>Previous topic</h4> <p class="topless"><a href="timeit.html" title="previous chapter">26.5. <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="../_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.5. 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 v3.1.1 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-2009, 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 Aug 16, 2009. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.2. </div> </body> </html>