757 lines
54 KiB
HTML
757 lines
54 KiB
HTML
|
||
<!DOCTYPE html>
|
||
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<title>pdb — The Python Debugger — Python 3.7.4 documentation</title>
|
||
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||
|
||
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></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/language_data.js"></script>
|
||
|
||
<script type="text/javascript" src="../_static/sidebar.js"></script>
|
||
|
||
<link rel="search" type="application/opensearchdescription+xml"
|
||
title="Search within Python 3.7.4 documentation"
|
||
href="../_static/opensearch.xml"/>
|
||
<link rel="author" title="About these documents" href="../about.html" />
|
||
<link rel="index" title="Index" href="../genindex.html" />
|
||
<link rel="search" title="Search" href="../search.html" />
|
||
<link rel="copyright" title="Copyright" href="../copyright.html" />
|
||
<link rel="next" title="The Python Profilers" href="profile.html" />
|
||
<link rel="prev" title="faulthandler — Dump the Python traceback" href="faulthandler.html" />
|
||
<link rel="shortcut icon" type="image/png" href="../_static/py.png" />
|
||
<link rel="canonical" href="https://docs.python.org/3/library/pdb.html" />
|
||
|
||
<script type="text/javascript" src="../_static/copybutton.js"></script>
|
||
<script type="text/javascript" src="../_static/switchers.js"></script>
|
||
|
||
|
||
|
||
<style>
|
||
@media only screen {
|
||
table.full-width-table {
|
||
width: 100%;
|
||
}
|
||
}
|
||
</style>
|
||
|
||
|
||
</head><body>
|
||
|
||
<div class="related" role="navigation" aria-label="related navigation">
|
||
<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="profile.html" title="The Python Profilers"
|
||
accesskey="N">next</a> |</li>
|
||
<li class="right" >
|
||
<a href="faulthandler.html" title="faulthandler — Dump the Python traceback"
|
||
accesskey="P">previous</a> |</li>
|
||
<li><img src="../_static/py.png" alt=""
|
||
style="vertical-align: middle; margin-top: -1px"/></li>
|
||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||
<li>
|
||
<span class="language_switcher_placeholder">en</span>
|
||
<span class="version_switcher_placeholder">3.7.4</span>
|
||
<a href="../index.html">Documentation </a> »
|
||
</li>
|
||
|
||
<li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li>
|
||
<li class="nav-item nav-item-2"><a href="debug.html" accesskey="U">Debugging and Profiling</a> »</li>
|
||
<li class="right">
|
||
|
||
|
||
<div class="inline-search" style="display: none" role="search">
|
||
<form class="inline-search" action="../search.html" method="get">
|
||
<input placeholder="Quick search" 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>
|
||
</div>
|
||
<script type="text/javascript">$('.inline-search').show(0);</script>
|
||
|
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="document">
|
||
<div class="documentwrapper">
|
||
<div class="bodywrapper">
|
||
<div class="body" role="main">
|
||
|
||
<div class="section" id="module-pdb">
|
||
<span id="pdb-the-python-debugger"></span><span id="debugger"></span><h1><a class="reference internal" href="#module-pdb" title="pdb: The Python debugger for interactive interpreters."><code class="xref py py-mod docutils literal notranslate"><span class="pre">pdb</span></code></a> — The Python Debugger<a class="headerlink" href="#module-pdb" title="Permalink to this headline">¶</a></h1>
|
||
<p><strong>Source code:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.7/Lib/pdb.py">Lib/pdb.py</a></p>
|
||
<hr class="docutils" id="index-0" />
|
||
<p>The module <a class="reference internal" href="#module-pdb" title="pdb: The Python debugger for interactive interpreters."><code class="xref py py-mod docutils literal notranslate"><span class="pre">pdb</span></code></a> defines an interactive source code debugger for Python
|
||
programs. It supports setting (conditional) breakpoints and single stepping at
|
||
the source line level, inspection of stack frames, source code listing, and
|
||
evaluation of arbitrary Python code in the context of any stack frame. It also
|
||
supports post-mortem debugging and can be called under program control.</p>
|
||
<p id="index-1">The debugger is extensible – it is actually defined as the class <a class="reference internal" href="#pdb.Pdb" title="pdb.Pdb"><code class="xref py py-class docutils literal notranslate"><span class="pre">Pdb</span></code></a>.
|
||
This is currently undocumented but easily understood by reading the source. The
|
||
extension interface uses the modules <a class="reference internal" href="bdb.html#module-bdb" title="bdb: Debugger framework."><code class="xref py py-mod docutils literal notranslate"><span class="pre">bdb</span></code></a> and <a class="reference internal" href="cmd.html#module-cmd" title="cmd: Build line-oriented command interpreters."><code class="xref py py-mod docutils literal notranslate"><span class="pre">cmd</span></code></a>.</p>
|
||
<p>The debugger’s prompt is <code class="docutils literal notranslate"><span class="pre">(Pdb)</span></code>. Typical usage to run a program under control
|
||
of the debugger is:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">pdb</span>
|
||
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">mymodule</span>
|
||
<span class="gp">>>> </span><span class="n">pdb</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s1">'mymodule.test()'</span><span class="p">)</span>
|
||
<span class="go">> <string>(0)?()</span>
|
||
<span class="go">(Pdb) continue</span>
|
||
<span class="go">> <string>(1)?()</span>
|
||
<span class="go">(Pdb) continue</span>
|
||
<span class="go">NameError: 'spam'</span>
|
||
<span class="go">> <string>(1)?()</span>
|
||
<span class="go">(Pdb)</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">Changed in version 3.3: </span>Tab-completion via the <a class="reference internal" href="readline.html#module-readline" title="readline: GNU readline support for Python. (Unix)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">readline</span></code></a> module is available for commands and
|
||
command arguments, e.g. the current global and local names are offered as
|
||
arguments of the <code class="docutils literal notranslate"><span class="pre">p</span></code> command.</p>
|
||
</div>
|
||
<p><code class="file docutils literal notranslate"><span class="pre">pdb.py</span></code> can also be invoked as a script to debug other scripts. For
|
||
example:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pdb</span> <span class="n">myscript</span><span class="o">.</span><span class="n">py</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>When invoked as a script, pdb will automatically enter post-mortem debugging if
|
||
the program being debugged exits abnormally. After post-mortem debugging (or
|
||
after normal exit of the program), pdb will restart the program. Automatic
|
||
restarting preserves pdb’s state (such as breakpoints) and in most cases is more
|
||
useful than quitting the debugger upon program’s exit.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.2: </span><code class="file docutils literal notranslate"><span class="pre">pdb.py</span></code> now accepts a <code class="docutils literal notranslate"><span class="pre">-c</span></code> option that executes commands as if given
|
||
in a <code class="file docutils literal notranslate"><span class="pre">.pdbrc</span></code> file, see <a class="reference internal" href="#debugger-commands"><span class="std std-ref">Debugger Commands</span></a>.</p>
|
||
</div>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.7: </span><code class="file docutils literal notranslate"><span class="pre">pdb.py</span></code> now accepts a <code class="docutils literal notranslate"><span class="pre">-m</span></code> option that execute modules similar to the way
|
||
<code class="docutils literal notranslate"><span class="pre">python3</span> <span class="pre">-m</span></code> does. As with a script, the debugger will pause execution just
|
||
before the first line of the module.</p>
|
||
</div>
|
||
<p>The typical usage to break into the debugger from a running program is to
|
||
insert</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pdb</span><span class="p">;</span> <span class="n">pdb</span><span class="o">.</span><span class="n">set_trace</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>at the location you want to break into the debugger. You can then step through
|
||
the code following this statement, and continue running without the debugger
|
||
using the <a class="reference internal" href="#pdbcommand-continue"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">continue</span></code></a> command.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.7: </span>The built-in <a class="reference internal" href="functions.html#breakpoint" title="breakpoint"><code class="xref py py-func docutils literal notranslate"><span class="pre">breakpoint()</span></code></a>, when called with defaults, can be used
|
||
instead of <code class="docutils literal notranslate"><span class="pre">import</span> <span class="pre">pdb;</span> <span class="pre">pdb.set_trace()</span></code>.</p>
|
||
</div>
|
||
<p>The typical usage to inspect a crashed program is:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">pdb</span>
|
||
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">mymodule</span>
|
||
<span class="gp">>>> </span><span class="n">mymodule</span><span class="o">.</span><span class="n">test</span><span class="p">()</span>
|
||
<span class="gt">Traceback (most recent call last):</span>
|
||
File <span class="nb">"<stdin>"</span>, line <span class="m">1</span>, in <span class="n"><module></span>
|
||
File <span class="nb">"./mymodule.py"</span>, line <span class="m">4</span>, in <span class="n">test</span>
|
||
<span class="n">test2</span><span class="p">()</span>
|
||
File <span class="nb">"./mymodule.py"</span>, line <span class="m">3</span>, in <span class="n">test2</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="n">spam</span><span class="p">)</span>
|
||
<span class="gr">NameError</span>: <span class="n">spam</span>
|
||
<span class="gp">>>> </span><span class="n">pdb</span><span class="o">.</span><span class="n">pm</span><span class="p">()</span>
|
||
<span class="go">> ./mymodule.py(3)test2()</span>
|
||
<span class="go">-> print(spam)</span>
|
||
<span class="go">(Pdb)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>The module defines the following functions; each enters the debugger in a
|
||
slightly different way:</p>
|
||
<dl class="function">
|
||
<dt id="pdb.run">
|
||
<code class="descclassname">pdb.</code><code class="descname">run</code><span class="sig-paren">(</span><em>statement</em>, <em>globals=None</em>, <em>locals=None</em><span class="sig-paren">)</span><a class="headerlink" href="#pdb.run" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Execute the <em>statement</em> (given as a string or a code object) under debugger
|
||
control. The debugger prompt appears before any code is executed; you can
|
||
set breakpoints and type <a class="reference internal" href="#pdbcommand-continue"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">continue</span></code></a>, or you can step through the
|
||
statement using <a class="reference internal" href="#pdbcommand-step"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">step</span></code></a> or <a class="reference internal" href="#pdbcommand-next"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">next</span></code></a> (all these commands are
|
||
explained below). The optional <em>globals</em> and <em>locals</em> arguments specify the
|
||
environment in which the code is executed; by default the dictionary of the
|
||
module <a class="reference internal" href="__main__.html#module-__main__" title="__main__: The environment where the top-level script is run."><code class="xref py py-mod docutils literal notranslate"><span class="pre">__main__</span></code></a> is used. (See the explanation of the built-in
|
||
<a class="reference internal" href="functions.html#exec" title="exec"><code class="xref py py-func docutils literal notranslate"><span class="pre">exec()</span></code></a> or <a class="reference internal" href="functions.html#eval" title="eval"><code class="xref py py-func docutils literal notranslate"><span class="pre">eval()</span></code></a> functions.)</p>
|
||
</dd></dl>
|
||
|
||
<dl class="function">
|
||
<dt id="pdb.runeval">
|
||
<code class="descclassname">pdb.</code><code class="descname">runeval</code><span class="sig-paren">(</span><em>expression</em>, <em>globals=None</em>, <em>locals=None</em><span class="sig-paren">)</span><a class="headerlink" href="#pdb.runeval" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Evaluate the <em>expression</em> (given as a string or a code object) under debugger
|
||
control. When <a class="reference internal" href="#pdb.runeval" title="pdb.runeval"><code class="xref py py-func docutils literal notranslate"><span class="pre">runeval()</span></code></a> returns, it returns the value of the
|
||
expression. Otherwise this function is similar to <a class="reference internal" href="#pdb.run" title="pdb.run"><code class="xref py py-func docutils literal notranslate"><span class="pre">run()</span></code></a>.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="function">
|
||
<dt id="pdb.runcall">
|
||
<code class="descclassname">pdb.</code><code class="descname">runcall</code><span class="sig-paren">(</span><em>function</em>, <em>*args</em>, <em>**kwds</em><span class="sig-paren">)</span><a class="headerlink" href="#pdb.runcall" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Call the <em>function</em> (a function or method object, not a string) with the
|
||
given arguments. When <a class="reference internal" href="#pdb.runcall" title="pdb.runcall"><code class="xref py py-func docutils literal notranslate"><span class="pre">runcall()</span></code></a> returns, it returns whatever the
|
||
function call returned. The debugger prompt appears as soon as the function
|
||
is entered.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="function">
|
||
<dt id="pdb.set_trace">
|
||
<code class="descclassname">pdb.</code><code class="descname">set_trace</code><span class="sig-paren">(</span><em>*</em>, <em>header=None</em><span class="sig-paren">)</span><a class="headerlink" href="#pdb.set_trace" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Enter the debugger at the calling stack frame. This is useful to hard-code
|
||
a breakpoint at a given point in a program, even if the code is not
|
||
otherwise being debugged (e.g. when an assertion fails). If given,
|
||
<em>header</em> is printed to the console just before debugging begins.</p>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">Changed in version 3.7: </span>The keyword-only argument <em>header</em>.</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="function">
|
||
<dt id="pdb.post_mortem">
|
||
<code class="descclassname">pdb.</code><code class="descname">post_mortem</code><span class="sig-paren">(</span><em>traceback=None</em><span class="sig-paren">)</span><a class="headerlink" href="#pdb.post_mortem" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Enter post-mortem debugging of the given <em>traceback</em> object. If no
|
||
<em>traceback</em> is given, it uses the one of the exception that is currently
|
||
being handled (an exception must be being handled if the default is to be
|
||
used).</p>
|
||
</dd></dl>
|
||
|
||
<dl class="function">
|
||
<dt id="pdb.pm">
|
||
<code class="descclassname">pdb.</code><code class="descname">pm</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#pdb.pm" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Enter post-mortem debugging of the traceback found in
|
||
<a class="reference internal" href="sys.html#sys.last_traceback" title="sys.last_traceback"><code class="xref py py-data docutils literal notranslate"><span class="pre">sys.last_traceback</span></code></a>.</p>
|
||
</dd></dl>
|
||
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">run*</span></code> functions and <a class="reference internal" href="#pdb.set_trace" title="pdb.set_trace"><code class="xref py py-func docutils literal notranslate"><span class="pre">set_trace()</span></code></a> are aliases for instantiating the
|
||
<a class="reference internal" href="#pdb.Pdb" title="pdb.Pdb"><code class="xref py py-class docutils literal notranslate"><span class="pre">Pdb</span></code></a> class and calling the method of the same name. If you want to
|
||
access further features, you have to do this yourself:</p>
|
||
<dl class="class">
|
||
<dt id="pdb.Pdb">
|
||
<em class="property">class </em><code class="descclassname">pdb.</code><code class="descname">Pdb</code><span class="sig-paren">(</span><em>completekey='tab'</em>, <em>stdin=None</em>, <em>stdout=None</em>, <em>skip=None</em>, <em>nosigint=False</em>, <em>readrc=True</em><span class="sig-paren">)</span><a class="headerlink" href="#pdb.Pdb" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p><a class="reference internal" href="#pdb.Pdb" title="pdb.Pdb"><code class="xref py py-class docutils literal notranslate"><span class="pre">Pdb</span></code></a> is the debugger class.</p>
|
||
<p>The <em>completekey</em>, <em>stdin</em> and <em>stdout</em> arguments are passed to the
|
||
underlying <a class="reference internal" href="cmd.html#cmd.Cmd" title="cmd.Cmd"><code class="xref py py-class docutils literal notranslate"><span class="pre">cmd.Cmd</span></code></a> class; see the description there.</p>
|
||
<p>The <em>skip</em> argument, if given, must be an iterable of glob-style module name
|
||
patterns. The debugger will not step into frames that originate in a module
|
||
that matches one of these patterns. <a class="footnote-reference brackets" href="#id3" id="id1">1</a></p>
|
||
<p>By default, Pdb sets a handler for the SIGINT signal (which is sent when the
|
||
user presses <kbd class="kbd docutils literal notranslate">Ctrl-C</kbd> on the console) when you give a <code class="docutils literal notranslate"><span class="pre">continue</span></code> command.
|
||
This allows you to break into the debugger again by pressing <kbd class="kbd docutils literal notranslate">Ctrl-C</kbd>. If you
|
||
want Pdb not to touch the SIGINT handler, set <em>nosigint</em> to true.</p>
|
||
<p>The <em>readrc</em> argument defaults to true and controls whether Pdb will load
|
||
.pdbrc files from the filesystem.</p>
|
||
<p>Example call to enable tracing with <em>skip</em>:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pdb</span><span class="p">;</span> <span class="n">pdb</span><span class="o">.</span><span class="n">Pdb</span><span class="p">(</span><span class="n">skip</span><span class="o">=</span><span class="p">[</span><span class="s1">'django.*'</span><span class="p">])</span><span class="o">.</span><span class="n">set_trace</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.1: </span>The <em>skip</em> argument.</p>
|
||
</div>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.2: </span>The <em>nosigint</em> argument. Previously, a SIGINT handler was never set by
|
||
Pdb.</p>
|
||
</div>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">Changed in version 3.6: </span>The <em>readrc</em> argument.</p>
|
||
</div>
|
||
<dl class="method">
|
||
<dt id="pdb.Pdb.run">
|
||
<code class="descname">run</code><span class="sig-paren">(</span><em>statement</em>, <em>globals=None</em>, <em>locals=None</em><span class="sig-paren">)</span><a class="headerlink" href="#pdb.Pdb.run" title="Permalink to this definition">¶</a></dt>
|
||
<dt id="pdb.Pdb.runeval">
|
||
<code class="descname">runeval</code><span class="sig-paren">(</span><em>expression</em>, <em>globals=None</em>, <em>locals=None</em><span class="sig-paren">)</span><a class="headerlink" href="#pdb.Pdb.runeval" title="Permalink to this definition">¶</a></dt>
|
||
<dt id="pdb.Pdb.runcall">
|
||
<code class="descname">runcall</code><span class="sig-paren">(</span><em>function</em>, <em>*args</em>, <em>**kwds</em><span class="sig-paren">)</span><a class="headerlink" href="#pdb.Pdb.runcall" title="Permalink to this definition">¶</a></dt>
|
||
<dt id="pdb.Pdb.set_trace">
|
||
<code class="descname">set_trace</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#pdb.Pdb.set_trace" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>See the documentation for the functions explained above.</p>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
<div class="section" id="debugger-commands">
|
||
<span id="id2"></span><h2>Debugger Commands<a class="headerlink" href="#debugger-commands" title="Permalink to this headline">¶</a></h2>
|
||
<p>The commands recognized by the debugger are listed below. Most commands can be
|
||
abbreviated to one or two letters as indicated; e.g. <code class="docutils literal notranslate"><span class="pre">h(elp)</span></code> means that
|
||
either <code class="docutils literal notranslate"><span class="pre">h</span></code> or <code class="docutils literal notranslate"><span class="pre">help</span></code> can be used to enter the help command (but not <code class="docutils literal notranslate"><span class="pre">he</span></code>
|
||
or <code class="docutils literal notranslate"><span class="pre">hel</span></code>, nor <code class="docutils literal notranslate"><span class="pre">H</span></code> or <code class="docutils literal notranslate"><span class="pre">Help</span></code> or <code class="docutils literal notranslate"><span class="pre">HELP</span></code>). Arguments to commands must be
|
||
separated by whitespace (spaces or tabs). Optional arguments are enclosed in
|
||
square brackets (<code class="docutils literal notranslate"><span class="pre">[]</span></code>) in the command syntax; the square brackets must not be
|
||
typed. Alternatives in the command syntax are separated by a vertical bar
|
||
(<code class="docutils literal notranslate"><span class="pre">|</span></code>).</p>
|
||
<p>Entering a blank line repeats the last command entered. Exception: if the last
|
||
command was a <a class="reference internal" href="#pdbcommand-list"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">list</span></code></a> command, the next 11 lines are listed.</p>
|
||
<p>Commands that the debugger doesn’t recognize are assumed to be Python statements
|
||
and are executed in the context of the program being debugged. Python
|
||
statements can also be prefixed with an exclamation point (<code class="docutils literal notranslate"><span class="pre">!</span></code>). This is a
|
||
powerful way to inspect the program being debugged; it is even possible to
|
||
change a variable or call a function. When an exception occurs in such a
|
||
statement, the exception name is printed but the debugger’s state is not
|
||
changed.</p>
|
||
<p>The debugger supports <a class="reference internal" href="#debugger-aliases"><span class="std std-ref">aliases</span></a>. Aliases can have
|
||
parameters which allows one a certain level of adaptability to the context under
|
||
examination.</p>
|
||
<p>Multiple commands may be entered on a single line, separated by <code class="docutils literal notranslate"><span class="pre">;;</span></code>. (A
|
||
single <code class="docutils literal notranslate"><span class="pre">;</span></code> is not used as it is the separator for multiple commands in a line
|
||
that is passed to the Python parser.) No intelligence is applied to separating
|
||
the commands; the input is split at the first <code class="docutils literal notranslate"><span class="pre">;;</span></code> pair, even if it is in the
|
||
middle of a quoted string.</p>
|
||
<p id="index-2">If a file <code class="file docutils literal notranslate"><span class="pre">.pdbrc</span></code> exists in the user’s home directory or in the current
|
||
directory, it is read in and executed as if it had been typed at the debugger
|
||
prompt. This is particularly useful for aliases. If both files exist, the one
|
||
in the home directory is read first and aliases defined there can be overridden
|
||
by the local file.</p>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">Changed in version 3.2: </span><code class="file docutils literal notranslate"><span class="pre">.pdbrc</span></code> can now contain commands that continue debugging, such as
|
||
<a class="reference internal" href="#pdbcommand-continue"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">continue</span></code></a> or <a class="reference internal" href="#pdbcommand-next"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">next</span></code></a>. Previously, these commands had no
|
||
effect.</p>
|
||
</div>
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-help">
|
||
<code class="descname">h(elp)</code><code class="descclassname"> [command]</code><a class="headerlink" href="#pdbcommand-help" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Without argument, print the list of available commands. With a <em>command</em> as
|
||
argument, print help about that command. <code class="docutils literal notranslate"><span class="pre">help</span> <span class="pre">pdb</span></code> displays the full
|
||
documentation (the docstring of the <a class="reference internal" href="#module-pdb" title="pdb: The Python debugger for interactive interpreters."><code class="xref py py-mod docutils literal notranslate"><span class="pre">pdb</span></code></a> module). Since the <em>command</em>
|
||
argument must be an identifier, <code class="docutils literal notranslate"><span class="pre">help</span> <span class="pre">exec</span></code> must be entered to get help on
|
||
the <code class="docutils literal notranslate"><span class="pre">!</span></code> command.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-where">
|
||
<code class="descname">w(here)</code><a class="headerlink" href="#pdbcommand-where" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Print a stack trace, with the most recent frame at the bottom. An arrow
|
||
indicates the current frame, which determines the context of most commands.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-down">
|
||
<code class="descname">d(own)</code><code class="descclassname"> [count]</code><a class="headerlink" href="#pdbcommand-down" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Move the current frame <em>count</em> (default one) levels down in the stack trace
|
||
(to a newer frame).</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-up">
|
||
<code class="descname">u(p)</code><code class="descclassname"> [count]</code><a class="headerlink" href="#pdbcommand-up" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Move the current frame <em>count</em> (default one) levels up in the stack trace (to
|
||
an older frame).</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-break">
|
||
<code class="descname">b(reak)</code><code class="descclassname"> [([filename:]lineno | function) [, condition]]</code><a class="headerlink" href="#pdbcommand-break" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>With a <em>lineno</em> argument, set a break there in the current file. With a
|
||
<em>function</em> argument, set a break at the first executable statement within
|
||
that function. The line number may be prefixed with a filename and a colon,
|
||
to specify a breakpoint in another file (probably one that hasn’t been loaded
|
||
yet). The file is searched on <a class="reference internal" href="sys.html#sys.path" title="sys.path"><code class="xref py py-data docutils literal notranslate"><span class="pre">sys.path</span></code></a>. Note that each breakpoint
|
||
is assigned a number to which all the other breakpoint commands refer.</p>
|
||
<p>If a second argument is present, it is an expression which must evaluate to
|
||
true before the breakpoint is honored.</p>
|
||
<p>Without argument, list all breaks, including for each breakpoint, the number
|
||
of times that breakpoint has been hit, the current ignore count, and the
|
||
associated condition if any.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-tbreak">
|
||
<code class="descname">tbreak</code><code class="descclassname"> [([filename:]lineno | function) [, condition]]</code><a class="headerlink" href="#pdbcommand-tbreak" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Temporary breakpoint, which is removed automatically when it is first hit.
|
||
The arguments are the same as for <a class="reference internal" href="#pdbcommand-break"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">break</span></code></a>.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-clear">
|
||
<code class="descname">cl(ear)</code><code class="descclassname"> [filename:lineno | bpnumber [bpnumber ...]]</code><a class="headerlink" href="#pdbcommand-clear" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>With a <em>filename:lineno</em> argument, clear all the breakpoints at this line.
|
||
With a space separated list of breakpoint numbers, clear those breakpoints.
|
||
Without argument, clear all breaks (but first ask confirmation).</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-disable">
|
||
<code class="descname">disable</code><code class="descclassname"> [bpnumber [bpnumber ...]]</code><a class="headerlink" href="#pdbcommand-disable" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Disable the breakpoints given as a space separated list of breakpoint
|
||
numbers. Disabling a breakpoint means it cannot cause the program to stop
|
||
execution, but unlike clearing a breakpoint, it remains in the list of
|
||
breakpoints and can be (re-)enabled.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-enable">
|
||
<code class="descname">enable</code><code class="descclassname"> [bpnumber [bpnumber ...]]</code><a class="headerlink" href="#pdbcommand-enable" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Enable the breakpoints specified.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-ignore">
|
||
<code class="descname">ignore</code><code class="descclassname"> bpnumber [count]</code><a class="headerlink" href="#pdbcommand-ignore" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Set the ignore count for the given breakpoint number. If count is omitted,
|
||
the ignore count is set to 0. A breakpoint becomes active when the ignore
|
||
count is zero. When non-zero, the count is decremented each time the
|
||
breakpoint is reached and the breakpoint is not disabled and any associated
|
||
condition evaluates to true.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-condition">
|
||
<code class="descname">condition</code><code class="descclassname"> bpnumber [condition]</code><a class="headerlink" href="#pdbcommand-condition" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Set a new <em>condition</em> for the breakpoint, an expression which must evaluate
|
||
to true before the breakpoint is honored. If <em>condition</em> is absent, any
|
||
existing condition is removed; i.e., the breakpoint is made unconditional.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-commands">
|
||
<code class="descname">commands</code><code class="descclassname"> [bpnumber]</code><a class="headerlink" href="#pdbcommand-commands" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Specify a list of commands for breakpoint number <em>bpnumber</em>. The commands
|
||
themselves appear on the following lines. Type a line containing just
|
||
<code class="docutils literal notranslate"><span class="pre">end</span></code> to terminate the commands. An example:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">Pdb</span><span class="p">)</span> <span class="n">commands</span> <span class="mi">1</span>
|
||
<span class="p">(</span><span class="n">com</span><span class="p">)</span> <span class="n">p</span> <span class="n">some_variable</span>
|
||
<span class="p">(</span><span class="n">com</span><span class="p">)</span> <span class="n">end</span>
|
||
<span class="p">(</span><span class="n">Pdb</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>To remove all commands from a breakpoint, type <code class="docutils literal notranslate"><span class="pre">commands</span></code> and follow it
|
||
immediately with <code class="docutils literal notranslate"><span class="pre">end</span></code>; that is, give no commands.</p>
|
||
<p>With no <em>bpnumber</em> argument, <code class="docutils literal notranslate"><span class="pre">commands</span></code> refers to the last breakpoint set.</p>
|
||
<p>You can use breakpoint commands to start your program up again. Simply use
|
||
the <a class="reference internal" href="#pdbcommand-continue"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">continue</span></code></a> command, or <a class="reference internal" href="#pdbcommand-step"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">step</span></code></a>,
|
||
or any other command that resumes execution.</p>
|
||
<p>Specifying any command resuming execution
|
||
(currently <a class="reference internal" href="#pdbcommand-continue"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">continue</span></code></a>, <a class="reference internal" href="#pdbcommand-step"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">step</span></code></a>, <a class="reference internal" href="#pdbcommand-next"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">next</span></code></a>,
|
||
<a class="reference internal" href="#pdbcommand-return"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">return</span></code></a>, <a class="reference internal" href="#pdbcommand-jump"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">jump</span></code></a>, <a class="reference internal" href="#pdbcommand-quit"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">quit</span></code></a> and their abbreviations)
|
||
terminates the command list (as if
|
||
that command was immediately followed by end). This is because any time you
|
||
resume execution (even with a simple next or step), you may encounter another
|
||
breakpoint—which could have its own command list, leading to ambiguities about
|
||
which list to execute.</p>
|
||
<p>If you use the ‘silent’ command in the command list, the usual message about
|
||
stopping at a breakpoint is not printed. This may be desirable for breakpoints
|
||
that are to print a specific message and then continue. If none of the other
|
||
commands print anything, you see no sign that the breakpoint was reached.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-step">
|
||
<code class="descname">s(tep)</code><a class="headerlink" href="#pdbcommand-step" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Execute the current line, stop at the first possible occasion (either in a
|
||
function that is called or on the next line in the current function).</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-next">
|
||
<code class="descname">n(ext)</code><a class="headerlink" href="#pdbcommand-next" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Continue execution until the next line in the current function is reached or
|
||
it returns. (The difference between <a class="reference internal" href="#pdbcommand-next"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">next</span></code></a> and <a class="reference internal" href="#pdbcommand-step"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">step</span></code></a> is
|
||
that <a class="reference internal" href="#pdbcommand-step"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">step</span></code></a> stops inside a called function, while <a class="reference internal" href="#pdbcommand-next"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">next</span></code></a>
|
||
executes called functions at (nearly) full speed, only stopping at the next
|
||
line in the current function.)</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-until">
|
||
<code class="descname">unt(il)</code><code class="descclassname"> [lineno]</code><a class="headerlink" href="#pdbcommand-until" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Without argument, continue execution until the line with a number greater
|
||
than the current one is reached.</p>
|
||
<p>With a line number, continue execution until a line with a number greater or
|
||
equal to that is reached. In both cases, also stop when the current frame
|
||
returns.</p>
|
||
<div class="versionchanged">
|
||
<p><span class="versionmodified changed">Changed in version 3.2: </span>Allow giving an explicit line number.</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-return">
|
||
<code class="descname">r(eturn)</code><a class="headerlink" href="#pdbcommand-return" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Continue execution until the current function returns.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-continue">
|
||
<code class="descname">c(ont(inue))</code><a class="headerlink" href="#pdbcommand-continue" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Continue execution, only stop when a breakpoint is encountered.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-jump">
|
||
<code class="descname">j(ump)</code><code class="descclassname"> lineno</code><a class="headerlink" href="#pdbcommand-jump" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Set the next line that will be executed. Only available in the bottom-most
|
||
frame. This lets you jump back and execute code again, or jump forward to
|
||
skip code that you don’t want to run.</p>
|
||
<p>It should be noted that not all jumps are allowed – for instance it is not
|
||
possible to jump into the middle of a <a class="reference internal" href="../reference/compound_stmts.html#for"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">for</span></code></a> loop or out of a
|
||
<a class="reference internal" href="../reference/compound_stmts.html#finally"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">finally</span></code></a> clause.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-list">
|
||
<code class="descname">l(ist)</code><code class="descclassname"> [first[, last]]</code><a class="headerlink" href="#pdbcommand-list" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>List source code for the current file. Without arguments, list 11 lines
|
||
around the current line or continue the previous listing. With <code class="docutils literal notranslate"><span class="pre">.</span></code> as
|
||
argument, list 11 lines around the current line. With one argument,
|
||
list 11 lines around at that line. With two arguments, list the given range;
|
||
if the second argument is less than the first, it is interpreted as a count.</p>
|
||
<p>The current line in the current frame is indicated by <code class="docutils literal notranslate"><span class="pre">-></span></code>. If an
|
||
exception is being debugged, the line where the exception was originally
|
||
raised or propagated is indicated by <code class="docutils literal notranslate"><span class="pre">>></span></code>, if it differs from the current
|
||
line.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.2: </span>The <code class="docutils literal notranslate"><span class="pre">>></span></code> marker.</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-ll">
|
||
<code class="descname">ll</code><code class="descclassname"> | longlist</code><a class="headerlink" href="#pdbcommand-ll" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>List all source code for the current function or frame. Interesting lines
|
||
are marked as for <a class="reference internal" href="#pdbcommand-list"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">list</span></code></a>.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.2.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-args">
|
||
<code class="descname">a(rgs)</code><a class="headerlink" href="#pdbcommand-args" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Print the argument list of the current function.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-p">
|
||
<code class="descname">p</code><code class="descclassname"> expression</code><a class="headerlink" href="#pdbcommand-p" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Evaluate the <em>expression</em> in the current context and print its value.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">print()</span></code> can also be used, but is not a debugger command — this executes the
|
||
Python <a class="reference internal" href="functions.html#print" title="print"><code class="xref py py-func docutils literal notranslate"><span class="pre">print()</span></code></a> function.</p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-pp">
|
||
<code class="descname">pp</code><code class="descclassname"> expression</code><a class="headerlink" href="#pdbcommand-pp" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Like the <a class="reference internal" href="#pdbcommand-p"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">p</span></code></a> command, except the value of the expression is
|
||
pretty-printed using the <a class="reference internal" href="pprint.html#module-pprint" title="pprint: Data pretty printer."><code class="xref py py-mod docutils literal notranslate"><span class="pre">pprint</span></code></a> module.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-whatis">
|
||
<code class="descname">whatis</code><code class="descclassname"> expression</code><a class="headerlink" href="#pdbcommand-whatis" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Print the type of the <em>expression</em>.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-source">
|
||
<code class="descname">source</code><code class="descclassname"> expression</code><a class="headerlink" href="#pdbcommand-source" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Try to get source code for the given object and display it.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.2.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-display">
|
||
<code class="descname">display</code><code class="descclassname"> [expression]</code><a class="headerlink" href="#pdbcommand-display" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Display the value of the expression if it changed, each time execution stops
|
||
in the current frame.</p>
|
||
<p>Without expression, list all display expressions for the current frame.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.2.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-undisplay">
|
||
<code class="descname">undisplay</code><code class="descclassname"> [expression]</code><a class="headerlink" href="#pdbcommand-undisplay" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Do not display the expression any more in the current frame. Without
|
||
expression, clear all display expressions for the current frame.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.2.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-interact">
|
||
<code class="descname">interact</code><a class="headerlink" href="#pdbcommand-interact" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Start an interactive interpreter (using the <a class="reference internal" href="code.html#module-code" title="code: Facilities to implement read-eval-print loops."><code class="xref py py-mod docutils literal notranslate"><span class="pre">code</span></code></a> module) whose global
|
||
namespace contains all the (global and local) names found in the current
|
||
scope.</p>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 3.2.</span></p>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<span class="target" id="debugger-aliases"></span><dl class="pdbcommand">
|
||
<dt id="pdbcommand-alias">
|
||
<code class="descname">alias</code><code class="descclassname"> [name [command]]</code><a class="headerlink" href="#pdbcommand-alias" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Create an alias called <em>name</em> that executes <em>command</em>. The command must
|
||
<em>not</em> be enclosed in quotes. Replaceable parameters can be indicated by
|
||
<code class="docutils literal notranslate"><span class="pre">%1</span></code>, <code class="docutils literal notranslate"><span class="pre">%2</span></code>, and so on, while <code class="docutils literal notranslate"><span class="pre">%*</span></code> is replaced by all the parameters.
|
||
If no command is given, the current alias for <em>name</em> is shown. If no
|
||
arguments are given, all aliases are listed.</p>
|
||
<p>Aliases may be nested and can contain anything that can be legally typed at
|
||
the pdb prompt. Note that internal pdb commands <em>can</em> be overridden by
|
||
aliases. Such a command is then hidden until the alias is removed. Aliasing
|
||
is recursively applied to the first word of the command line; all other words
|
||
in the line are left alone.</p>
|
||
<p>As an example, here are two useful aliases (especially when placed in the
|
||
<code class="file docutils literal notranslate"><span class="pre">.pdbrc</span></code> file):</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Print instance variables (usage "pi classInst")</span>
|
||
<span class="n">alias</span> <span class="n">pi</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="o">%</span><span class="mf">1.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"%1."</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="s2">"="</span><span class="p">,</span><span class="o">%</span><span class="mf">1.</span><span class="vm">__dict__</span><span class="p">[</span><span class="n">k</span><span class="p">])</span>
|
||
<span class="c1"># Print instance variables in self</span>
|
||
<span class="n">alias</span> <span class="n">ps</span> <span class="n">pi</span> <span class="bp">self</span>
|
||
</pre></div>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-unalias">
|
||
<code class="descname">unalias</code><code class="descclassname"> name</code><a class="headerlink" href="#pdbcommand-unalias" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Delete the specified alias.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-!">
|
||
<code class="descname">!</code><code class="descclassname"> statement</code><a class="headerlink" href="#pdbcommand-!" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Execute the (one-line) <em>statement</em> in the context of the current stack frame.
|
||
The exclamation point can be omitted unless the first word of the statement
|
||
resembles a debugger command. To set a global variable, you can prefix the
|
||
assignment command with a <a class="reference internal" href="../reference/simple_stmts.html#global"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">global</span></code></a> statement on the same line,
|
||
e.g.:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">Pdb</span><span class="p">)</span> <span class="k">global</span> <span class="n">list_options</span><span class="p">;</span> <span class="n">list_options</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'-l'</span><span class="p">]</span>
|
||
<span class="p">(</span><span class="n">Pdb</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-run">
|
||
<code class="descname">run</code><code class="descclassname"> [args ...]</code><a class="headerlink" href="#pdbcommand-run" title="Permalink to this definition">¶</a></dt>
|
||
<dt id="pdbcommand-restart">
|
||
<code class="descname">restart</code><code class="descclassname"> [args ...]</code><a class="headerlink" href="#pdbcommand-restart" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Restart the debugged Python program. If an argument is supplied, it is split
|
||
with <a class="reference internal" href="shlex.html#module-shlex" title="shlex: Simple lexical analysis for Unix shell-like languages."><code class="xref py py-mod docutils literal notranslate"><span class="pre">shlex</span></code></a> and the result is used as the new <a class="reference internal" href="sys.html#sys.argv" title="sys.argv"><code class="xref py py-data docutils literal notranslate"><span class="pre">sys.argv</span></code></a>.
|
||
History, breakpoints, actions and debugger options are preserved.
|
||
<a class="reference internal" href="#pdbcommand-restart"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">restart</span></code></a> is an alias for <a class="reference internal" href="#pdbcommand-run"><code class="xref std std-pdbcmd docutils literal notranslate"><span class="pre">run</span></code></a>.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="pdbcommand">
|
||
<dt id="pdbcommand-quit">
|
||
<code class="descname">q(uit)</code><a class="headerlink" href="#pdbcommand-quit" title="Permalink to this definition">¶</a></dt>
|
||
<dd><p>Quit from the debugger. The program being executed is aborted.</p>
|
||
</dd></dl>
|
||
|
||
<p class="rubric">Footnotes</p>
|
||
<dl class="footnote brackets">
|
||
<dt class="label" id="id3"><span class="brackets"><a class="fn-backref" href="#id1">1</a></span></dt>
|
||
<dd><p>Whether a frame is considered to originate in a certain module
|
||
is determined by the <code class="docutils literal notranslate"><span class="pre">__name__</span></code> in the frame globals.</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||
<div class="sphinxsidebarwrapper">
|
||
<h3><a href="../contents.html">Table of Contents</a></h3>
|
||
<ul>
|
||
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">pdb</span></code> — The Python Debugger</a><ul>
|
||
<li><a class="reference internal" href="#debugger-commands">Debugger Commands</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<h4>Previous topic</h4>
|
||
<p class="topless"><a href="faulthandler.html"
|
||
title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">faulthandler</span></code> — Dump the Python traceback</a></p>
|
||
<h4>Next topic</h4>
|
||
<p class="topless"><a href="profile.html"
|
||
title="next chapter">The Python Profilers</a></p>
|
||
<div role="note" aria-label="source link">
|
||
<h3>This Page</h3>
|
||
<ul class="this-page-menu">
|
||
<li><a href="../bugs.html">Report a Bug</a></li>
|
||
<li>
|
||
<a href="https://github.com/python/cpython/blob/3.7/Doc/library/pdb.rst"
|
||
rel="nofollow">Show Source
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="clearer"></div>
|
||
</div>
|
||
<div class="related" role="navigation" aria-label="related navigation">
|
||
<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="profile.html" title="The Python Profilers"
|
||
>next</a> |</li>
|
||
<li class="right" >
|
||
<a href="faulthandler.html" title="faulthandler — Dump the Python traceback"
|
||
>previous</a> |</li>
|
||
<li><img src="../_static/py.png" alt=""
|
||
style="vertical-align: middle; margin-top: -1px"/></li>
|
||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||
<li>
|
||
<span class="language_switcher_placeholder">en</span>
|
||
<span class="version_switcher_placeholder">3.7.4</span>
|
||
<a href="../index.html">Documentation </a> »
|
||
</li>
|
||
|
||
<li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li>
|
||
<li class="nav-item nav-item-2"><a href="debug.html" >Debugging and Profiling</a> »</li>
|
||
<li class="right">
|
||
|
||
|
||
<div class="inline-search" style="display: none" role="search">
|
||
<form class="inline-search" action="../search.html" method="get">
|
||
<input placeholder="Quick search" 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>
|
||
</div>
|
||
<script type="text/javascript">$('.inline-search').show(0);</script>
|
||
|
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
<div class="footer">
|
||
© <a href="../copyright.html">Copyright</a> 2001-2019, Python Software Foundation.
|
||
<br />
|
||
The Python Software Foundation is a non-profit corporation.
|
||
<a href="https://www.python.org/psf/donations/">Please donate.</a>
|
||
<br />
|
||
Last updated on Jul 13, 2019.
|
||
<a href="../bugs.html">Found a bug</a>?
|
||
<br />
|
||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 2.0.1.
|
||
</div>
|
||
|
||
</body>
|
||
</html> |