Server : Apache System : Linux server1.cgrithy.com 3.10.0-1160.95.1.el7.x86_64 #1 SMP Mon Jul 24 13:59:37 UTC 2023 x86_64 User : nobody ( 99) PHP Version : 8.1.23 Disable Function : NONE Directory : /usr/share/doc/python-docs-2.7.5/html/library/ |
<!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 2.7.5 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.7.5', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/sidebar.js"></script> <link rel="search" type="application/opensearchdescription+xml" title="Search within Python 2.7.5 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 2.7.5 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" /> <script type="text/javascript" src="../_static/copybutton.js"></script> </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="../py-modindex.html" title="Python Module Index" >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="http://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.5 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"> <span id="trace-trace-or-track-python-statement-execution"></span><h1>26.7. <a class="reference internal" href="#module-trace" title="trace: Trace or track Python statement execution."><tt class="xref py py-mod docutils literal"><span class="pre">trace</span></tt></a> — Trace or track Python statement execution<a class="headerlink" href="#module-trace" title="Permalink to this headline">¶</a></h1> <p><strong>Source code:</strong> <a class="reference external" href="http://hg.python.org/cpython/file/2.7/Lib/trace.py">Lib/trace.py</a></p> <hr class="docutils" /> <p>The <a class="reference internal" href="#module-trace" title="trace: Trace or track Python statement execution."><tt class="xref py py-mod docutils literal"><span class="pre">trace</span></tt></a> 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 <a class="reference internal" href="#module-trace" title="trace: Trace or track Python statement execution."><tt class="xref py py-mod docutils literal"><span class="pre">trace</span></tt></a> 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="file 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> <dl class="cmdoption"> <dt id="cmdoption-trace--help"> <tt class="descname">--help</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace--help" title="Permalink to this definition">¶</a></dt> <dd><p>Display usage and exit.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace--version"> <tt class="descname">--version</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace--version" title="Permalink to this definition">¶</a></dt> <dd><p>Display the version of the module and exit.</p> </dd></dl> <div class="section" id="main-options"> <h3>26.7.1.1. Main options<a class="headerlink" href="#main-options" title="Permalink to this headline">¶</a></h3> <p>At least one of the following options must be specified when invoking <a class="reference internal" href="#module-trace" title="trace: Trace or track Python statement execution."><tt class="xref py py-mod docutils literal"><span class="pre">trace</span></tt></a>. The <a class="reference internal" href="#cmdoption-trace-l"><em class="xref std std-option">--listfuncs</em></a> option is mutually exclusive with the <a class="reference internal" href="#cmdoption-trace-t"><em class="xref std std-option">--trace</em></a> and <a class="reference internal" href="#cmdoption-trace-c"><em class="xref std std-option">--counts</em></a> options . When <a class="reference internal" href="#cmdoption-trace-l"><em class="xref std std-option">--listfuncs</em></a> is provided, neither <a class="reference internal" href="#cmdoption-trace-c"><em class="xref std std-option">--counts</em></a> nor <a class="reference internal" href="#cmdoption-trace-t"><em class="xref std std-option">--trace</em></a> are accepted, and vice versa.</p> <dl class="cmdoption"> <dt id="cmdoption-trace-c"> <tt class="descname">-c</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--count</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace-c" title="Permalink to this definition">¶</a></dt> <dd><p>Produce a set of annotated listing files upon program completion that shows how many times each statement was executed. See also <a class="reference internal" href="#cmdoption-trace-C"><em class="xref std std-option">--coverdir</em></a>, <a class="reference internal" href="#cmdoption-trace-f"><em class="xref std std-option">--file</em></a> and <a class="reference internal" href="#cmdoption-trace-R"><em class="xref std std-option">--no-report</em></a> below.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace-t"> <tt class="descname">-t</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--trace</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace-t" title="Permalink to this definition">¶</a></dt> <dd><p>Display lines as they are executed.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace-l"> <tt class="descname">-l</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--listfuncs</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace-l" title="Permalink to this definition">¶</a></dt> <dd><p>Display the functions executed by running the program.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace-r"> <tt class="descname">-r</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--report</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace-r" title="Permalink to this definition">¶</a></dt> <dd><p>Produce an annotated list from an earlier program run that used the <a class="reference internal" href="#cmdoption-trace-c"><em class="xref std std-option">--count</em></a> and <a class="reference internal" href="#cmdoption-trace-f"><em class="xref std std-option">--file</em></a> option. This does not execute any code.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace-T"> <tt class="descname">-T</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--trackcalls</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace-T" title="Permalink to this definition">¶</a></dt> <dd><p>Display the calling relationships exposed by running the program.</p> </dd></dl> </div> <div class="section" id="modifiers"> <h3>26.7.1.2. Modifiers<a class="headerlink" href="#modifiers" title="Permalink to this headline">¶</a></h3> <dl class="cmdoption"> <dt id="cmdoption-trace-f"> <tt class="descname">-f</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--file</tt><tt class="descclassname">=<file></tt><a class="headerlink" href="#cmdoption-trace-f" title="Permalink to this definition">¶</a></dt> <dd><p>Name of a file to accumulate counts over several tracing runs. Should be used with the <a class="reference internal" href="#cmdoption-trace-c"><em class="xref std std-option">--count</em></a> option.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace-C"> <tt class="descname">-C</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--coverdir</tt><tt class="descclassname">=<dir></tt><a class="headerlink" href="#cmdoption-trace-C" title="Permalink to this definition">¶</a></dt> <dd><p>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="file docutils literal"><em><span class="pre">dir</span></em><span class="pre">/</span><em><span class="pre">package</span></em><span class="pre">/</span><em><span class="pre">module</span></em><span class="pre">.cover</span></tt>.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace-m"> <tt class="descname">-m</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--missing</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace-m" title="Permalink to this definition">¶</a></dt> <dd><p>When generating annotated listings, mark lines which were not executed with <tt class="docutils literal"><span class="pre">>>>>>></span></tt>.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace-s"> <tt class="descname">-s</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--summary</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace-s" title="Permalink to this definition">¶</a></dt> <dd><p>When using <a class="reference internal" href="#cmdoption-trace-c"><em class="xref std std-option">--count</em></a> or <a class="reference internal" href="#cmdoption-trace-r"><em class="xref std std-option">--report</em></a>, write a brief summary to stdout for each file processed.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace-R"> <tt class="descname">-R</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--no-report</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace-R" title="Permalink to this definition">¶</a></dt> <dd><p>Do not generate annotated listings. This is useful if you intend to make several runs with <a class="reference internal" href="#cmdoption-trace-c"><em class="xref std std-option">--count</em></a>, and then produce a single set of annotated listings at the end.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace-g"> <tt class="descname">-g</tt><tt class="descclassname"></tt><tt class="descclassname">, </tt><tt class="descname">--timing</tt><tt class="descclassname"></tt><a class="headerlink" href="#cmdoption-trace-g" title="Permalink to this definition">¶</a></dt> <dd><p>Prefix each line with the time since the program started. Only used while tracing.</p> </dd></dl> </div> <div class="section" id="filters"> <h3>26.7.1.3. Filters<a class="headerlink" href="#filters" title="Permalink to this headline">¶</a></h3> <p>These options may be repeated multiple times.</p> <dl class="cmdoption"> <dt id="cmdoption-trace--ignore-module"> <tt class="descname">--ignore-module</tt><tt class="descclassname">=<mod></tt><a class="headerlink" href="#cmdoption-trace--ignore-module" title="Permalink to this definition">¶</a></dt> <dd><p>Ignore each of the given module names and its submodules (if it is a package). The argument can be a list of names separated by a comma.</p> </dd></dl> <dl class="cmdoption"> <dt id="cmdoption-trace--ignore-dir"> <tt class="descname">--ignore-dir</tt><tt class="descclassname">=<dir></tt><a class="headerlink" href="#cmdoption-trace--ignore-dir" title="Permalink to this definition">¶</a></dt> <dd><p>Ignore all modules and packages in the named directory and subdirectories. The argument can be a list of directories separated by <a class="reference internal" href="os.html#os.pathsep" title="os.pathsep"><tt class="xref py py-data docutils literal"><span class="pre">os.pathsep</span></tt></a>.</p> </dd></dl> </div> </div> <div class="section" id="programmatic-interface"> <span id="trace-api"></span><h2>26.7.2. Programmatic Interface<a class="headerlink" href="#programmatic-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><p>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.</p> <blockquote> <div><dl class="method"> <dt id="trace.Trace.run"> <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><p>Execute the command and gather statistics from the execution with the current tracing parameters. <em>cmd</em> must be a string or code object, suitable for passing into <tt class="xref py py-func docutils literal"><span class="pre">exec()</span></tt>.</p> </dd></dl> <dl class="method"> <dt id="trace.Trace.runctx"> <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><p>Execute the command and gather statistics from the execution 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.</p> </dd></dl> <dl class="method"> <dt id="trace.Trace.runfunc"> <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><p>Call <em>func</em> with the given arguments under control of the <a class="reference internal" href="#trace.Trace" title="trace.Trace"><tt class="xref py py-class docutils literal"><span class="pre">Trace</span></tt></a> object with the current tracing parameters.</p> </dd></dl> <dl class="method"> <dt id="trace.Trace.results"> <tt class="descname">results</tt><big>(</big><big>)</big><a class="headerlink" href="#trace.Trace.results" title="Permalink to this definition">¶</a></dt> <dd><p>Return a <a class="reference internal" href="#trace.CoverageResults" title="trace.CoverageResults"><tt class="xref py py-class 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 class="reference internal" href="#trace.Trace" title="trace.Trace"><tt class="xref py py-class docutils literal"><span class="pre">Trace</span></tt></a> instance. Does not reset the accumulated trace results.</p> </dd></dl> </div></blockquote> </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><p>A container for coverage results, created by <a class="reference internal" href="#trace.Trace.results" title="trace.Trace.results"><tt class="xref py py-meth docutils literal"><span class="pre">Trace.results()</span></tt></a>. Should not be created directly by the user.</p> <blockquote> <div><dl class="method"> <dt id="trace.CoverageResults.update"> <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><p>Merge in data from another <a class="reference internal" href="#trace.CoverageResults" title="trace.CoverageResults"><tt class="xref py py-class docutils literal"><span class="pre">CoverageResults</span></tt></a> object.</p> </dd></dl> <dl class="method"> <dt id="trace.CoverageResults.write_results"> <tt class="descname">write_results</tt><big>(</big><span class="optional">[</span><em>show_missing=True</em><span class="optional">[</span>, <em>summary=False</em><span class="optional">[</span>, <em>coverdir=None</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#trace.CoverageResults.write_results" title="Permalink to this definition">¶</a></dt> <dd><p>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="docutils literal"><span class="pre">None</span></tt>, the results for each source file are placed in its directory.</p> </dd></dl> </div></blockquote> </dd></dl> <p>A simple example demonstrating the use of the programmatic 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 the current directory</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">"."</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 internal" 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 internal" href="#command-line-usage">26.7.1. Command-Line Usage</a><ul> <li><a class="reference internal" href="#main-options">26.7.1.1. Main options</a></li> <li><a class="reference internal" href="#modifiers">26.7.1.2. Modifiers</a></li> <li><a class="reference internal" href="#filters">26.7.1.3. Filters</a></li> </ul> </li> <li><a class="reference internal" href="#programmatic-interface">26.7.2. Programmatic 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"><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" /> <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="../py-modindex.html" title="Python 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="http://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.5 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-2020, 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 Oct 13, 2020. <a href="../bugs.html">Found a bug</a>? <br /> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. </div> </body> </html>