17db96d56Sopenharmony_ci.. _debugger: 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ci:mod:`pdb` --- The Python Debugger 47db96d56Sopenharmony_ci================================== 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_ci.. module:: pdb 77db96d56Sopenharmony_ci :synopsis: The Python debugger for interactive interpreters. 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci**Source code:** :source:`Lib/pdb.py` 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci.. index:: single: debugging 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ci-------------- 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ciThe module :mod:`pdb` defines an interactive source code debugger for Python 167db96d56Sopenharmony_ciprograms. It supports setting (conditional) breakpoints and single stepping at 177db96d56Sopenharmony_cithe source line level, inspection of stack frames, source code listing, and 187db96d56Sopenharmony_cievaluation of arbitrary Python code in the context of any stack frame. It also 197db96d56Sopenharmony_cisupports post-mortem debugging and can be called under program control. 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci.. index:: 227db96d56Sopenharmony_ci single: Pdb (class in pdb) 237db96d56Sopenharmony_ci pair: module; bdb 247db96d56Sopenharmony_ci pair: module; cmd 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ciThe debugger is extensible -- it is actually defined as the class :class:`Pdb`. 277db96d56Sopenharmony_ciThis is currently undocumented but easily understood by reading the source. The 287db96d56Sopenharmony_ciextension interface uses the modules :mod:`bdb` and :mod:`cmd`. 297db96d56Sopenharmony_ci 307db96d56Sopenharmony_ci.. seealso:: 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ci Module :mod:`faulthandler` 337db96d56Sopenharmony_ci Used to dump Python tracebacks explicitly, on a fault, after a timeout, 347db96d56Sopenharmony_ci or on a user signal. 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci Module :mod:`traceback` 377db96d56Sopenharmony_ci Standard interface to extract, format and print stack traces of Python programs. 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ciThe typical usage to break into the debugger is to insert:: 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci import pdb; pdb.set_trace() 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ciOr:: 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci breakpoint() 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ciat the location you want to break into the debugger, and then run the program. 487db96d56Sopenharmony_ciYou can then step through the code following this statement, and continue 497db96d56Sopenharmony_cirunning without the debugger using the :pdbcmd:`continue` command. 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci.. versionadded:: 3.7 527db96d56Sopenharmony_ci The built-in :func:`breakpoint()`, when called with defaults, can be used 537db96d56Sopenharmony_ci instead of ``import pdb; pdb.set_trace()``. 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci:: 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci def double(x): 587db96d56Sopenharmony_ci breakpoint() 597db96d56Sopenharmony_ci return x * 2 607db96d56Sopenharmony_ci val = 3 617db96d56Sopenharmony_ci print(f"{val} * 2 is {double(val)}") 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ciThe debugger's prompt is ``(Pdb)``, which is the indicator that you are in debug mode:: 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci > ...(3)double() 667db96d56Sopenharmony_ci -> return x * 2 677db96d56Sopenharmony_ci (Pdb) p x 687db96d56Sopenharmony_ci 3 697db96d56Sopenharmony_ci (Pdb) continue 707db96d56Sopenharmony_ci 3 * 2 is 6 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci.. versionchanged:: 3.3 737db96d56Sopenharmony_ci Tab-completion via the :mod:`readline` module is available for commands and 747db96d56Sopenharmony_ci command arguments, e.g. the current global and local names are offered as 757db96d56Sopenharmony_ci arguments of the ``p`` command. 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ciYou can also invoke :mod:`pdb` from the command line to debug other scripts. For 797db96d56Sopenharmony_ciexample:: 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci python -m pdb myscript.py 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ciWhen invoked as a module, pdb will automatically enter post-mortem debugging if 847db96d56Sopenharmony_cithe program being debugged exits abnormally. After post-mortem debugging (or 857db96d56Sopenharmony_ciafter normal exit of the program), pdb will restart the program. Automatic 867db96d56Sopenharmony_cirestarting preserves pdb's state (such as breakpoints) and in most cases is more 877db96d56Sopenharmony_ciuseful than quitting the debugger upon program's exit. 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ci.. versionadded:: 3.2 907db96d56Sopenharmony_ci ``-c`` option is introduced to execute commands as if given 917db96d56Sopenharmony_ci in a :file:`.pdbrc` file, see :ref:`debugger-commands`. 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci.. versionadded:: 3.7 947db96d56Sopenharmony_ci ``-m`` option is introduced to execute modules similar to the way 957db96d56Sopenharmony_ci ``python -m`` does. As with a script, the debugger will pause execution just 967db96d56Sopenharmony_ci before the first line of the module. 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ciTypical usage to execute a statement under control of the debugger is:: 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_ci >>> import pdb 1017db96d56Sopenharmony_ci >>> def f(x): 1027db96d56Sopenharmony_ci ... print(1 / x) 1037db96d56Sopenharmony_ci >>> pdb.run("f(2)") 1047db96d56Sopenharmony_ci > <string>(1)<module>() 1057db96d56Sopenharmony_ci (Pdb) continue 1067db96d56Sopenharmony_ci 0.5 1077db96d56Sopenharmony_ci >>> 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ciThe typical usage to inspect a crashed program is:: 1107db96d56Sopenharmony_ci 1117db96d56Sopenharmony_ci >>> import pdb 1127db96d56Sopenharmony_ci >>> def f(x): 1137db96d56Sopenharmony_ci ... print(1 / x) 1147db96d56Sopenharmony_ci ... 1157db96d56Sopenharmony_ci >>> f(0) 1167db96d56Sopenharmony_ci Traceback (most recent call last): 1177db96d56Sopenharmony_ci File "<stdin>", line 1, in <module> 1187db96d56Sopenharmony_ci File "<stdin>", line 2, in f 1197db96d56Sopenharmony_ci ZeroDivisionError: division by zero 1207db96d56Sopenharmony_ci >>> pdb.pm() 1217db96d56Sopenharmony_ci > <stdin>(2)f() 1227db96d56Sopenharmony_ci (Pdb) p x 1237db96d56Sopenharmony_ci 0 1247db96d56Sopenharmony_ci (Pdb) 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_ci 1277db96d56Sopenharmony_ciThe module defines the following functions; each enters the debugger in a 1287db96d56Sopenharmony_cislightly different way: 1297db96d56Sopenharmony_ci 1307db96d56Sopenharmony_ci.. function:: run(statement, globals=None, locals=None) 1317db96d56Sopenharmony_ci 1327db96d56Sopenharmony_ci Execute the *statement* (given as a string or a code object) under debugger 1337db96d56Sopenharmony_ci control. The debugger prompt appears before any code is executed; you can 1347db96d56Sopenharmony_ci set breakpoints and type :pdbcmd:`continue`, or you can step through the 1357db96d56Sopenharmony_ci statement using :pdbcmd:`step` or :pdbcmd:`next` (all these commands are 1367db96d56Sopenharmony_ci explained below). The optional *globals* and *locals* arguments specify the 1377db96d56Sopenharmony_ci environment in which the code is executed; by default the dictionary of the 1387db96d56Sopenharmony_ci module :mod:`__main__` is used. (See the explanation of the built-in 1397db96d56Sopenharmony_ci :func:`exec` or :func:`eval` functions.) 1407db96d56Sopenharmony_ci 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci.. function:: runeval(expression, globals=None, locals=None) 1437db96d56Sopenharmony_ci 1447db96d56Sopenharmony_ci Evaluate the *expression* (given as a string or a code object) under debugger 1457db96d56Sopenharmony_ci control. When :func:`runeval` returns, it returns the value of the 1467db96d56Sopenharmony_ci *expression*. Otherwise this function is similar to :func:`run`. 1477db96d56Sopenharmony_ci 1487db96d56Sopenharmony_ci 1497db96d56Sopenharmony_ci.. function:: runcall(function, *args, **kwds) 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_ci Call the *function* (a function or method object, not a string) with the 1527db96d56Sopenharmony_ci given arguments. When :func:`runcall` returns, it returns whatever the 1537db96d56Sopenharmony_ci function call returned. The debugger prompt appears as soon as the function 1547db96d56Sopenharmony_ci is entered. 1557db96d56Sopenharmony_ci 1567db96d56Sopenharmony_ci 1577db96d56Sopenharmony_ci.. function:: set_trace(*, header=None) 1587db96d56Sopenharmony_ci 1597db96d56Sopenharmony_ci Enter the debugger at the calling stack frame. This is useful to hard-code 1607db96d56Sopenharmony_ci a breakpoint at a given point in a program, even if the code is not 1617db96d56Sopenharmony_ci otherwise being debugged (e.g. when an assertion fails). If given, 1627db96d56Sopenharmony_ci *header* is printed to the console just before debugging begins. 1637db96d56Sopenharmony_ci 1647db96d56Sopenharmony_ci .. versionchanged:: 3.7 1657db96d56Sopenharmony_ci The keyword-only argument *header*. 1667db96d56Sopenharmony_ci 1677db96d56Sopenharmony_ci 1687db96d56Sopenharmony_ci.. function:: post_mortem(traceback=None) 1697db96d56Sopenharmony_ci 1707db96d56Sopenharmony_ci Enter post-mortem debugging of the given *traceback* object. If no 1717db96d56Sopenharmony_ci *traceback* is given, it uses the one of the exception that is currently 1727db96d56Sopenharmony_ci being handled (an exception must be being handled if the default is to be 1737db96d56Sopenharmony_ci used). 1747db96d56Sopenharmony_ci 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_ci.. function:: pm() 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_ci Enter post-mortem debugging of the traceback found in 1797db96d56Sopenharmony_ci :data:`sys.last_traceback`. 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_ci 1827db96d56Sopenharmony_ciThe ``run*`` functions and :func:`set_trace` are aliases for instantiating the 1837db96d56Sopenharmony_ci:class:`Pdb` class and calling the method of the same name. If you want to 1847db96d56Sopenharmony_ciaccess further features, you have to do this yourself: 1857db96d56Sopenharmony_ci 1867db96d56Sopenharmony_ci.. class:: Pdb(completekey='tab', stdin=None, stdout=None, skip=None, \ 1877db96d56Sopenharmony_ci nosigint=False, readrc=True) 1887db96d56Sopenharmony_ci 1897db96d56Sopenharmony_ci :class:`Pdb` is the debugger class. 1907db96d56Sopenharmony_ci 1917db96d56Sopenharmony_ci The *completekey*, *stdin* and *stdout* arguments are passed to the 1927db96d56Sopenharmony_ci underlying :class:`cmd.Cmd` class; see the description there. 1937db96d56Sopenharmony_ci 1947db96d56Sopenharmony_ci The *skip* argument, if given, must be an iterable of glob-style module name 1957db96d56Sopenharmony_ci patterns. The debugger will not step into frames that originate in a module 1967db96d56Sopenharmony_ci that matches one of these patterns. [1]_ 1977db96d56Sopenharmony_ci 1987db96d56Sopenharmony_ci By default, Pdb sets a handler for the SIGINT signal (which is sent when the 1997db96d56Sopenharmony_ci user presses :kbd:`Ctrl-C` on the console) when you give a :pdbcmd:`continue` command. 2007db96d56Sopenharmony_ci This allows you to break into the debugger again by pressing :kbd:`Ctrl-C`. If you 2017db96d56Sopenharmony_ci want Pdb not to touch the SIGINT handler, set *nosigint* to true. 2027db96d56Sopenharmony_ci 2037db96d56Sopenharmony_ci The *readrc* argument defaults to true and controls whether Pdb will load 2047db96d56Sopenharmony_ci .pdbrc files from the filesystem. 2057db96d56Sopenharmony_ci 2067db96d56Sopenharmony_ci Example call to enable tracing with *skip*:: 2077db96d56Sopenharmony_ci 2087db96d56Sopenharmony_ci import pdb; pdb.Pdb(skip=['django.*']).set_trace() 2097db96d56Sopenharmony_ci 2107db96d56Sopenharmony_ci .. audit-event:: pdb.Pdb "" pdb.Pdb 2117db96d56Sopenharmony_ci 2127db96d56Sopenharmony_ci .. versionadded:: 3.1 2137db96d56Sopenharmony_ci The *skip* argument. 2147db96d56Sopenharmony_ci 2157db96d56Sopenharmony_ci .. versionadded:: 3.2 2167db96d56Sopenharmony_ci The *nosigint* argument. Previously, a SIGINT handler was never set by 2177db96d56Sopenharmony_ci Pdb. 2187db96d56Sopenharmony_ci 2197db96d56Sopenharmony_ci .. versionchanged:: 3.6 2207db96d56Sopenharmony_ci The *readrc* argument. 2217db96d56Sopenharmony_ci 2227db96d56Sopenharmony_ci .. method:: run(statement, globals=None, locals=None) 2237db96d56Sopenharmony_ci runeval(expression, globals=None, locals=None) 2247db96d56Sopenharmony_ci runcall(function, *args, **kwds) 2257db96d56Sopenharmony_ci set_trace() 2267db96d56Sopenharmony_ci 2277db96d56Sopenharmony_ci See the documentation for the functions explained above. 2287db96d56Sopenharmony_ci 2297db96d56Sopenharmony_ci 2307db96d56Sopenharmony_ci.. _debugger-commands: 2317db96d56Sopenharmony_ci 2327db96d56Sopenharmony_ciDebugger Commands 2337db96d56Sopenharmony_ci----------------- 2347db96d56Sopenharmony_ci 2357db96d56Sopenharmony_ciThe commands recognized by the debugger are listed below. Most commands can be 2367db96d56Sopenharmony_ciabbreviated to one or two letters as indicated; e.g. ``h(elp)`` means that 2377db96d56Sopenharmony_cieither ``h`` or ``help`` can be used to enter the help command (but not ``he`` 2387db96d56Sopenharmony_cior ``hel``, nor ``H`` or ``Help`` or ``HELP``). Arguments to commands must be 2397db96d56Sopenharmony_ciseparated by whitespace (spaces or tabs). Optional arguments are enclosed in 2407db96d56Sopenharmony_cisquare brackets (``[]``) in the command syntax; the square brackets must not be 2417db96d56Sopenharmony_cityped. Alternatives in the command syntax are separated by a vertical bar 2427db96d56Sopenharmony_ci(``|``). 2437db96d56Sopenharmony_ci 2447db96d56Sopenharmony_ciEntering a blank line repeats the last command entered. Exception: if the last 2457db96d56Sopenharmony_cicommand was a :pdbcmd:`list` command, the next 11 lines are listed. 2467db96d56Sopenharmony_ci 2477db96d56Sopenharmony_ciCommands that the debugger doesn't recognize are assumed to be Python statements 2487db96d56Sopenharmony_ciand are executed in the context of the program being debugged. Python 2497db96d56Sopenharmony_cistatements can also be prefixed with an exclamation point (``!``). This is a 2507db96d56Sopenharmony_cipowerful way to inspect the program being debugged; it is even possible to 2517db96d56Sopenharmony_cichange a variable or call a function. When an exception occurs in such a 2527db96d56Sopenharmony_cistatement, the exception name is printed but the debugger's state is not 2537db96d56Sopenharmony_cichanged. 2547db96d56Sopenharmony_ci 2557db96d56Sopenharmony_ciThe debugger supports :ref:`aliases <debugger-aliases>`. Aliases can have 2567db96d56Sopenharmony_ciparameters which allows one a certain level of adaptability to the context under 2577db96d56Sopenharmony_ciexamination. 2587db96d56Sopenharmony_ci 2597db96d56Sopenharmony_ciMultiple commands may be entered on a single line, separated by ``;;``. (A 2607db96d56Sopenharmony_cisingle ``;`` is not used as it is the separator for multiple commands in a line 2617db96d56Sopenharmony_cithat is passed to the Python parser.) No intelligence is applied to separating 2627db96d56Sopenharmony_cithe commands; the input is split at the first ``;;`` pair, even if it is in the 2637db96d56Sopenharmony_cimiddle of a quoted string. A workaround for strings with double semicolons 2647db96d56Sopenharmony_ciis to use implicit string concatenation ``';'';'`` or ``";"";"``. 2657db96d56Sopenharmony_ci 2667db96d56Sopenharmony_ci.. index:: 2677db96d56Sopenharmony_ci pair: .pdbrc; file 2687db96d56Sopenharmony_ci triple: debugger; configuration; file 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ciIf a file :file:`.pdbrc` exists in the user's home directory or in the current 2717db96d56Sopenharmony_cidirectory, it is read with ``'utf-8'`` encoding and executed as if it had been 2727db96d56Sopenharmony_cityped at the debugger prompt. This is particularly useful for aliases. If both 2737db96d56Sopenharmony_cifiles exist, the one in the home directory is read first and aliases defined there 2747db96d56Sopenharmony_cican be overridden by the local file. 2757db96d56Sopenharmony_ci 2767db96d56Sopenharmony_ci.. versionchanged:: 3.11 2777db96d56Sopenharmony_ci :file:`.pdbrc` is now read with ``'utf-8'`` encoding. Previously, it was read 2787db96d56Sopenharmony_ci with the system locale encoding. 2797db96d56Sopenharmony_ci 2807db96d56Sopenharmony_ci.. versionchanged:: 3.2 2817db96d56Sopenharmony_ci :file:`.pdbrc` can now contain commands that continue debugging, such as 2827db96d56Sopenharmony_ci :pdbcmd:`continue` or :pdbcmd:`next`. Previously, these commands had no 2837db96d56Sopenharmony_ci effect. 2847db96d56Sopenharmony_ci 2857db96d56Sopenharmony_ci 2867db96d56Sopenharmony_ci.. pdbcommand:: h(elp) [command] 2877db96d56Sopenharmony_ci 2887db96d56Sopenharmony_ci Without argument, print the list of available commands. With a *command* as 2897db96d56Sopenharmony_ci argument, print help about that command. ``help pdb`` displays the full 2907db96d56Sopenharmony_ci documentation (the docstring of the :mod:`pdb` module). Since the *command* 2917db96d56Sopenharmony_ci argument must be an identifier, ``help exec`` must be entered to get help on 2927db96d56Sopenharmony_ci the ``!`` command. 2937db96d56Sopenharmony_ci 2947db96d56Sopenharmony_ci.. pdbcommand:: w(here) 2957db96d56Sopenharmony_ci 2967db96d56Sopenharmony_ci Print a stack trace, with the most recent frame at the bottom. An arrow (``>``) 2977db96d56Sopenharmony_ci indicates the current frame, which determines the context of most commands. 2987db96d56Sopenharmony_ci 2997db96d56Sopenharmony_ci.. pdbcommand:: d(own) [count] 3007db96d56Sopenharmony_ci 3017db96d56Sopenharmony_ci Move the current frame *count* (default one) levels down in the stack trace 3027db96d56Sopenharmony_ci (to a newer frame). 3037db96d56Sopenharmony_ci 3047db96d56Sopenharmony_ci.. pdbcommand:: u(p) [count] 3057db96d56Sopenharmony_ci 3067db96d56Sopenharmony_ci Move the current frame *count* (default one) levels up in the stack trace (to 3077db96d56Sopenharmony_ci an older frame). 3087db96d56Sopenharmony_ci 3097db96d56Sopenharmony_ci.. pdbcommand:: b(reak) [([filename:]lineno | function) [, condition]] 3107db96d56Sopenharmony_ci 3117db96d56Sopenharmony_ci With a *lineno* argument, set a break there in the current file. With a 3127db96d56Sopenharmony_ci *function* argument, set a break at the first executable statement within 3137db96d56Sopenharmony_ci that function. The line number may be prefixed with a filename and a colon, 3147db96d56Sopenharmony_ci to specify a breakpoint in another file (probably one that hasn't been loaded 3157db96d56Sopenharmony_ci yet). The file is searched on :data:`sys.path`. Note that each breakpoint 3167db96d56Sopenharmony_ci is assigned a number to which all the other breakpoint commands refer. 3177db96d56Sopenharmony_ci 3187db96d56Sopenharmony_ci If a second argument is present, it is an expression which must evaluate to 3197db96d56Sopenharmony_ci true before the breakpoint is honored. 3207db96d56Sopenharmony_ci 3217db96d56Sopenharmony_ci Without argument, list all breaks, including for each breakpoint, the number 3227db96d56Sopenharmony_ci of times that breakpoint has been hit, the current ignore count, and the 3237db96d56Sopenharmony_ci associated condition if any. 3247db96d56Sopenharmony_ci 3257db96d56Sopenharmony_ci.. pdbcommand:: tbreak [([filename:]lineno | function) [, condition]] 3267db96d56Sopenharmony_ci 3277db96d56Sopenharmony_ci Temporary breakpoint, which is removed automatically when it is first hit. 3287db96d56Sopenharmony_ci The arguments are the same as for :pdbcmd:`break`. 3297db96d56Sopenharmony_ci 3307db96d56Sopenharmony_ci.. pdbcommand:: cl(ear) [filename:lineno | bpnumber ...] 3317db96d56Sopenharmony_ci 3327db96d56Sopenharmony_ci With a *filename:lineno* argument, clear all the breakpoints at this line. 3337db96d56Sopenharmony_ci With a space separated list of breakpoint numbers, clear those breakpoints. 3347db96d56Sopenharmony_ci Without argument, clear all breaks (but first ask confirmation). 3357db96d56Sopenharmony_ci 3367db96d56Sopenharmony_ci.. pdbcommand:: disable [bpnumber ...] 3377db96d56Sopenharmony_ci 3387db96d56Sopenharmony_ci Disable the breakpoints given as a space separated list of breakpoint 3397db96d56Sopenharmony_ci numbers. Disabling a breakpoint means it cannot cause the program to stop 3407db96d56Sopenharmony_ci execution, but unlike clearing a breakpoint, it remains in the list of 3417db96d56Sopenharmony_ci breakpoints and can be (re-)enabled. 3427db96d56Sopenharmony_ci 3437db96d56Sopenharmony_ci.. pdbcommand:: enable [bpnumber ...] 3447db96d56Sopenharmony_ci 3457db96d56Sopenharmony_ci Enable the breakpoints specified. 3467db96d56Sopenharmony_ci 3477db96d56Sopenharmony_ci.. pdbcommand:: ignore bpnumber [count] 3487db96d56Sopenharmony_ci 3497db96d56Sopenharmony_ci Set the ignore count for the given breakpoint number. If *count* is omitted, 3507db96d56Sopenharmony_ci the ignore count is set to 0. A breakpoint becomes active when the ignore 3517db96d56Sopenharmony_ci count is zero. When non-zero, the *count* is decremented each time the 3527db96d56Sopenharmony_ci breakpoint is reached and the breakpoint is not disabled and any associated 3537db96d56Sopenharmony_ci condition evaluates to true. 3547db96d56Sopenharmony_ci 3557db96d56Sopenharmony_ci.. pdbcommand:: condition bpnumber [condition] 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci Set a new *condition* for the breakpoint, an expression which must evaluate 3587db96d56Sopenharmony_ci to true before the breakpoint is honored. If *condition* is absent, any 3597db96d56Sopenharmony_ci existing condition is removed; i.e., the breakpoint is made unconditional. 3607db96d56Sopenharmony_ci 3617db96d56Sopenharmony_ci.. pdbcommand:: commands [bpnumber] 3627db96d56Sopenharmony_ci 3637db96d56Sopenharmony_ci Specify a list of commands for breakpoint number *bpnumber*. The commands 3647db96d56Sopenharmony_ci themselves appear on the following lines. Type a line containing just 3657db96d56Sopenharmony_ci ``end`` to terminate the commands. An example:: 3667db96d56Sopenharmony_ci 3677db96d56Sopenharmony_ci (Pdb) commands 1 3687db96d56Sopenharmony_ci (com) p some_variable 3697db96d56Sopenharmony_ci (com) end 3707db96d56Sopenharmony_ci (Pdb) 3717db96d56Sopenharmony_ci 3727db96d56Sopenharmony_ci To remove all commands from a breakpoint, type ``commands`` and follow it 3737db96d56Sopenharmony_ci immediately with ``end``; that is, give no commands. 3747db96d56Sopenharmony_ci 3757db96d56Sopenharmony_ci With no *bpnumber* argument, ``commands`` refers to the last breakpoint set. 3767db96d56Sopenharmony_ci 3777db96d56Sopenharmony_ci You can use breakpoint commands to start your program up again. Simply use 3787db96d56Sopenharmony_ci the :pdbcmd:`continue` command, or :pdbcmd:`step`, 3797db96d56Sopenharmony_ci or any other command that resumes execution. 3807db96d56Sopenharmony_ci 3817db96d56Sopenharmony_ci Specifying any command resuming execution 3827db96d56Sopenharmony_ci (currently :pdbcmd:`continue`, :pdbcmd:`step`, :pdbcmd:`next`, 3837db96d56Sopenharmony_ci :pdbcmd:`return`, :pdbcmd:`jump`, :pdbcmd:`quit` and their abbreviations) 3847db96d56Sopenharmony_ci terminates the command list (as if 3857db96d56Sopenharmony_ci that command was immediately followed by end). This is because any time you 3867db96d56Sopenharmony_ci resume execution (even with a simple next or step), you may encounter another 3877db96d56Sopenharmony_ci breakpoint—which could have its own command list, leading to ambiguities about 3887db96d56Sopenharmony_ci which list to execute. 3897db96d56Sopenharmony_ci 3907db96d56Sopenharmony_ci If you use the ``silent`` command in the command list, the usual message about 3917db96d56Sopenharmony_ci stopping at a breakpoint is not printed. This may be desirable for breakpoints 3927db96d56Sopenharmony_ci that are to print a specific message and then continue. If none of the other 3937db96d56Sopenharmony_ci commands print anything, you see no sign that the breakpoint was reached. 3947db96d56Sopenharmony_ci 3957db96d56Sopenharmony_ci.. pdbcommand:: s(tep) 3967db96d56Sopenharmony_ci 3977db96d56Sopenharmony_ci Execute the current line, stop at the first possible occasion (either in a 3987db96d56Sopenharmony_ci function that is called or on the next line in the current function). 3997db96d56Sopenharmony_ci 4007db96d56Sopenharmony_ci.. pdbcommand:: n(ext) 4017db96d56Sopenharmony_ci 4027db96d56Sopenharmony_ci Continue execution until the next line in the current function is reached or 4037db96d56Sopenharmony_ci it returns. (The difference between :pdbcmd:`next` and :pdbcmd:`step` is 4047db96d56Sopenharmony_ci that :pdbcmd:`step` stops inside a called function, while :pdbcmd:`next` 4057db96d56Sopenharmony_ci executes called functions at (nearly) full speed, only stopping at the next 4067db96d56Sopenharmony_ci line in the current function.) 4077db96d56Sopenharmony_ci 4087db96d56Sopenharmony_ci.. pdbcommand:: unt(il) [lineno] 4097db96d56Sopenharmony_ci 4107db96d56Sopenharmony_ci Without argument, continue execution until the line with a number greater 4117db96d56Sopenharmony_ci than the current one is reached. 4127db96d56Sopenharmony_ci 4137db96d56Sopenharmony_ci With *lineno*, continue execution until a line with a number greater or 4147db96d56Sopenharmony_ci equal to *lineno* is reached. In both cases, also stop when the current frame 4157db96d56Sopenharmony_ci returns. 4167db96d56Sopenharmony_ci 4177db96d56Sopenharmony_ci .. versionchanged:: 3.2 4187db96d56Sopenharmony_ci Allow giving an explicit line number. 4197db96d56Sopenharmony_ci 4207db96d56Sopenharmony_ci.. pdbcommand:: r(eturn) 4217db96d56Sopenharmony_ci 4227db96d56Sopenharmony_ci Continue execution until the current function returns. 4237db96d56Sopenharmony_ci 4247db96d56Sopenharmony_ci.. pdbcommand:: c(ont(inue)) 4257db96d56Sopenharmony_ci 4267db96d56Sopenharmony_ci Continue execution, only stop when a breakpoint is encountered. 4277db96d56Sopenharmony_ci 4287db96d56Sopenharmony_ci.. pdbcommand:: j(ump) lineno 4297db96d56Sopenharmony_ci 4307db96d56Sopenharmony_ci Set the next line that will be executed. Only available in the bottom-most 4317db96d56Sopenharmony_ci frame. This lets you jump back and execute code again, or jump forward to 4327db96d56Sopenharmony_ci skip code that you don't want to run. 4337db96d56Sopenharmony_ci 4347db96d56Sopenharmony_ci It should be noted that not all jumps are allowed -- for instance it is not 4357db96d56Sopenharmony_ci possible to jump into the middle of a :keyword:`for` loop or out of a 4367db96d56Sopenharmony_ci :keyword:`finally` clause. 4377db96d56Sopenharmony_ci 4387db96d56Sopenharmony_ci.. pdbcommand:: l(ist) [first[, last]] 4397db96d56Sopenharmony_ci 4407db96d56Sopenharmony_ci List source code for the current file. Without arguments, list 11 lines 4417db96d56Sopenharmony_ci around the current line or continue the previous listing. With ``.`` as 4427db96d56Sopenharmony_ci argument, list 11 lines around the current line. With one argument, 4437db96d56Sopenharmony_ci list 11 lines around at that line. With two arguments, list the given range; 4447db96d56Sopenharmony_ci if the second argument is less than the first, it is interpreted as a count. 4457db96d56Sopenharmony_ci 4467db96d56Sopenharmony_ci The current line in the current frame is indicated by ``->``. If an 4477db96d56Sopenharmony_ci exception is being debugged, the line where the exception was originally 4487db96d56Sopenharmony_ci raised or propagated is indicated by ``>>``, if it differs from the current 4497db96d56Sopenharmony_ci line. 4507db96d56Sopenharmony_ci 4517db96d56Sopenharmony_ci .. versionadded:: 3.2 4527db96d56Sopenharmony_ci The ``>>`` marker. 4537db96d56Sopenharmony_ci 4547db96d56Sopenharmony_ci.. pdbcommand:: ll | longlist 4557db96d56Sopenharmony_ci 4567db96d56Sopenharmony_ci List all source code for the current function or frame. Interesting lines 4577db96d56Sopenharmony_ci are marked as for :pdbcmd:`list`. 4587db96d56Sopenharmony_ci 4597db96d56Sopenharmony_ci .. versionadded:: 3.2 4607db96d56Sopenharmony_ci 4617db96d56Sopenharmony_ci.. pdbcommand:: a(rgs) 4627db96d56Sopenharmony_ci 4637db96d56Sopenharmony_ci Print the arguments of the current function and their current values. 4647db96d56Sopenharmony_ci 4657db96d56Sopenharmony_ci.. pdbcommand:: p expression 4667db96d56Sopenharmony_ci 4677db96d56Sopenharmony_ci Evaluate *expression* in the current context and print its value. 4687db96d56Sopenharmony_ci 4697db96d56Sopenharmony_ci .. note:: 4707db96d56Sopenharmony_ci 4717db96d56Sopenharmony_ci ``print()`` can also be used, but is not a debugger command --- this executes the 4727db96d56Sopenharmony_ci Python :func:`print` function. 4737db96d56Sopenharmony_ci 4747db96d56Sopenharmony_ci 4757db96d56Sopenharmony_ci.. pdbcommand:: pp expression 4767db96d56Sopenharmony_ci 4777db96d56Sopenharmony_ci Like the :pdbcmd:`p` command, except the value of *expression* is 4787db96d56Sopenharmony_ci pretty-printed using the :mod:`pprint` module. 4797db96d56Sopenharmony_ci 4807db96d56Sopenharmony_ci.. pdbcommand:: whatis expression 4817db96d56Sopenharmony_ci 4827db96d56Sopenharmony_ci Print the type of *expression*. 4837db96d56Sopenharmony_ci 4847db96d56Sopenharmony_ci.. pdbcommand:: source expression 4857db96d56Sopenharmony_ci 4867db96d56Sopenharmony_ci Try to get source code of *expression* and display it. 4877db96d56Sopenharmony_ci 4887db96d56Sopenharmony_ci .. versionadded:: 3.2 4897db96d56Sopenharmony_ci 4907db96d56Sopenharmony_ci.. pdbcommand:: display [expression] 4917db96d56Sopenharmony_ci 4927db96d56Sopenharmony_ci Display the value of *expression* if it changed, each time execution stops 4937db96d56Sopenharmony_ci in the current frame. 4947db96d56Sopenharmony_ci 4957db96d56Sopenharmony_ci Without *expression*, list all display expressions for the current frame. 4967db96d56Sopenharmony_ci 4977db96d56Sopenharmony_ci .. note:: 4987db96d56Sopenharmony_ci 4997db96d56Sopenharmony_ci Display evaluates *expression* and compares to the result of the previous 5007db96d56Sopenharmony_ci evaluation of *expression*, so when the result is mutable, display may not 5017db96d56Sopenharmony_ci be able to pick up the changes. 5027db96d56Sopenharmony_ci 5037db96d56Sopenharmony_ci Example:: 5047db96d56Sopenharmony_ci 5057db96d56Sopenharmony_ci lst = [] 5067db96d56Sopenharmony_ci breakpoint() 5077db96d56Sopenharmony_ci pass 5087db96d56Sopenharmony_ci lst.append(1) 5097db96d56Sopenharmony_ci print(lst) 5107db96d56Sopenharmony_ci 5117db96d56Sopenharmony_ci Display won't realize ``lst`` has been changed because the result of evaluation 5127db96d56Sopenharmony_ci is modified in place by ``lst.append(1)`` before being compared:: 5137db96d56Sopenharmony_ci 5147db96d56Sopenharmony_ci > example.py(3)<module>() 5157db96d56Sopenharmony_ci -> pass 5167db96d56Sopenharmony_ci (Pdb) display lst 5177db96d56Sopenharmony_ci display lst: [] 5187db96d56Sopenharmony_ci (Pdb) n 5197db96d56Sopenharmony_ci > example.py(4)<module>() 5207db96d56Sopenharmony_ci -> lst.append(1) 5217db96d56Sopenharmony_ci (Pdb) n 5227db96d56Sopenharmony_ci > example.py(5)<module>() 5237db96d56Sopenharmony_ci -> print(lst) 5247db96d56Sopenharmony_ci (Pdb) 5257db96d56Sopenharmony_ci 5267db96d56Sopenharmony_ci You can do some tricks with copy mechanism to make it work:: 5277db96d56Sopenharmony_ci 5287db96d56Sopenharmony_ci > example.py(3)<module>() 5297db96d56Sopenharmony_ci -> pass 5307db96d56Sopenharmony_ci (Pdb) display lst[:] 5317db96d56Sopenharmony_ci display lst[:]: [] 5327db96d56Sopenharmony_ci (Pdb) n 5337db96d56Sopenharmony_ci > example.py(4)<module>() 5347db96d56Sopenharmony_ci -> lst.append(1) 5357db96d56Sopenharmony_ci (Pdb) n 5367db96d56Sopenharmony_ci > example.py(5)<module>() 5377db96d56Sopenharmony_ci -> print(lst) 5387db96d56Sopenharmony_ci display lst[:]: [1] [old: []] 5397db96d56Sopenharmony_ci (Pdb) 5407db96d56Sopenharmony_ci 5417db96d56Sopenharmony_ci .. versionadded:: 3.2 5427db96d56Sopenharmony_ci 5437db96d56Sopenharmony_ci.. pdbcommand:: undisplay [expression] 5447db96d56Sopenharmony_ci 5457db96d56Sopenharmony_ci Do not display *expression* anymore in the current frame. Without 5467db96d56Sopenharmony_ci *expression*, clear all display expressions for the current frame. 5477db96d56Sopenharmony_ci 5487db96d56Sopenharmony_ci .. versionadded:: 3.2 5497db96d56Sopenharmony_ci 5507db96d56Sopenharmony_ci.. pdbcommand:: interact 5517db96d56Sopenharmony_ci 5527db96d56Sopenharmony_ci Start an interactive interpreter (using the :mod:`code` module) whose global 5537db96d56Sopenharmony_ci namespace contains all the (global and local) names found in the current 5547db96d56Sopenharmony_ci scope. 5557db96d56Sopenharmony_ci 5567db96d56Sopenharmony_ci .. versionadded:: 3.2 5577db96d56Sopenharmony_ci 5587db96d56Sopenharmony_ci.. _debugger-aliases: 5597db96d56Sopenharmony_ci 5607db96d56Sopenharmony_ci.. pdbcommand:: alias [name [command]] 5617db96d56Sopenharmony_ci 5627db96d56Sopenharmony_ci Create an alias called *name* that executes *command*. The *command* must 5637db96d56Sopenharmony_ci *not* be enclosed in quotes. Replaceable parameters can be indicated by 5647db96d56Sopenharmony_ci ``%1``, ``%2``, and so on, while ``%*`` is replaced by all the parameters. 5657db96d56Sopenharmony_ci If *command* is omitted, the current alias for *name* is shown. If no 5667db96d56Sopenharmony_ci arguments are given, all aliases are listed. 5677db96d56Sopenharmony_ci 5687db96d56Sopenharmony_ci Aliases may be nested and can contain anything that can be legally typed at 5697db96d56Sopenharmony_ci the pdb prompt. Note that internal pdb commands *can* be overridden by 5707db96d56Sopenharmony_ci aliases. Such a command is then hidden until the alias is removed. Aliasing 5717db96d56Sopenharmony_ci is recursively applied to the first word of the command line; all other words 5727db96d56Sopenharmony_ci in the line are left alone. 5737db96d56Sopenharmony_ci 5747db96d56Sopenharmony_ci As an example, here are two useful aliases (especially when placed in the 5757db96d56Sopenharmony_ci :file:`.pdbrc` file):: 5767db96d56Sopenharmony_ci 5777db96d56Sopenharmony_ci # Print instance variables (usage "pi classInst") 5787db96d56Sopenharmony_ci alias pi for k in %1.__dict__.keys(): print(f"%1.{k} = {%1.__dict__[k]}") 5797db96d56Sopenharmony_ci # Print instance variables in self 5807db96d56Sopenharmony_ci alias ps pi self 5817db96d56Sopenharmony_ci 5827db96d56Sopenharmony_ci.. pdbcommand:: unalias name 5837db96d56Sopenharmony_ci 5847db96d56Sopenharmony_ci Delete the specified alias *name*. 5857db96d56Sopenharmony_ci 5867db96d56Sopenharmony_ci.. pdbcommand:: ! statement 5877db96d56Sopenharmony_ci 5887db96d56Sopenharmony_ci Execute the (one-line) *statement* in the context of the current stack frame. 5897db96d56Sopenharmony_ci The exclamation point can be omitted unless the first word of the statement 5907db96d56Sopenharmony_ci resembles a debugger command. To set a global variable, you can prefix the 5917db96d56Sopenharmony_ci assignment command with a :keyword:`global` statement on the same line, 5927db96d56Sopenharmony_ci e.g.:: 5937db96d56Sopenharmony_ci 5947db96d56Sopenharmony_ci (Pdb) global list_options; list_options = ['-l'] 5957db96d56Sopenharmony_ci (Pdb) 5967db96d56Sopenharmony_ci 5977db96d56Sopenharmony_ci.. pdbcommand:: run [args ...] 5987db96d56Sopenharmony_ci restart [args ...] 5997db96d56Sopenharmony_ci 6007db96d56Sopenharmony_ci Restart the debugged Python program. If *args* is supplied, it is split 6017db96d56Sopenharmony_ci with :mod:`shlex` and the result is used as the new :data:`sys.argv`. 6027db96d56Sopenharmony_ci History, breakpoints, actions and debugger options are preserved. 6037db96d56Sopenharmony_ci :pdbcmd:`restart` is an alias for :pdbcmd:`run`. 6047db96d56Sopenharmony_ci 6057db96d56Sopenharmony_ci.. pdbcommand:: q(uit) 6067db96d56Sopenharmony_ci 6077db96d56Sopenharmony_ci Quit from the debugger. The program being executed is aborted. 6087db96d56Sopenharmony_ci 6097db96d56Sopenharmony_ci.. pdbcommand:: debug code 6107db96d56Sopenharmony_ci 6117db96d56Sopenharmony_ci Enter a recursive debugger that steps through *code* 6127db96d56Sopenharmony_ci (which is an arbitrary expression or statement to be 6137db96d56Sopenharmony_ci executed in the current environment). 6147db96d56Sopenharmony_ci 6157db96d56Sopenharmony_ci.. pdbcommand:: retval 6167db96d56Sopenharmony_ci 6177db96d56Sopenharmony_ci Print the return value for the last return of the current function. 6187db96d56Sopenharmony_ci 6197db96d56Sopenharmony_ci.. rubric:: Footnotes 6207db96d56Sopenharmony_ci 6217db96d56Sopenharmony_ci.. [1] Whether a frame is considered to originate in a certain module 6227db96d56Sopenharmony_ci is determined by the ``__name__`` in the frame globals. 623