1.. _debugger: 2 3:mod:`pdb` --- The Python Debugger 4================================== 5 6.. module:: pdb 7 :synopsis: The Python debugger for interactive interpreters. 8 9**Source code:** :source:`Lib/pdb.py` 10 11.. index:: single: debugging 12 13-------------- 14 15The module :mod:`pdb` defines an interactive source code debugger for Python 16programs. It supports setting (conditional) breakpoints and single stepping at 17the source line level, inspection of stack frames, source code listing, and 18evaluation of arbitrary Python code in the context of any stack frame. It also 19supports post-mortem debugging and can be called under program control. 20 21.. index:: 22 single: Pdb (class in pdb) 23 module: bdb 24 module: cmd 25 26The debugger is extensible -- it is actually defined as the class :class:`Pdb`. 27This is currently undocumented but easily understood by reading the source. The 28extension interface uses the modules :mod:`bdb` and :mod:`cmd`. 29 30The debugger's prompt is ``(Pdb)``. Typical usage to run a program under control 31of the debugger is:: 32 33 >>> import pdb 34 >>> import mymodule 35 >>> pdb.run('mymodule.test()') 36 > <string>(0)?() 37 (Pdb) continue 38 > <string>(1)?() 39 (Pdb) continue 40 NameError: 'spam' 41 > <string>(1)?() 42 (Pdb) 43 44.. versionchanged:: 3.3 45 Tab-completion via the :mod:`readline` module is available for commands and 46 command arguments, e.g. the current global and local names are offered as 47 arguments of the ``p`` command. 48 49:file:`pdb.py` can also be invoked as a script to debug other scripts. For 50example:: 51 52 python3 -m pdb myscript.py 53 54When invoked as a script, pdb will automatically enter post-mortem debugging if 55the program being debugged exits abnormally. After post-mortem debugging (or 56after normal exit of the program), pdb will restart the program. Automatic 57restarting preserves pdb's state (such as breakpoints) and in most cases is more 58useful than quitting the debugger upon program's exit. 59 60.. versionadded:: 3.2 61 :file:`pdb.py` now accepts a ``-c`` option that executes commands as if given 62 in a :file:`.pdbrc` file, see :ref:`debugger-commands`. 63 64.. versionadded:: 3.7 65 :file:`pdb.py` now accepts a ``-m`` option that execute modules similar to the way 66 ``python3 -m`` does. As with a script, the debugger will pause execution just 67 before the first line of the module. 68 69 70The typical usage to break into the debugger from a running program is to 71insert :: 72 73 import pdb; pdb.set_trace() 74 75at the location you want to break into the debugger. You can then step through 76the code following this statement, and continue running without the debugger 77using the :pdbcmd:`continue` command. 78 79.. versionadded:: 3.7 80 The built-in :func:`breakpoint()`, when called with defaults, can be used 81 instead of ``import pdb; pdb.set_trace()``. 82 83The typical usage to inspect a crashed program is:: 84 85 >>> import pdb 86 >>> import mymodule 87 >>> mymodule.test() 88 Traceback (most recent call last): 89 File "<stdin>", line 1, in <module> 90 File "./mymodule.py", line 4, in test 91 test2() 92 File "./mymodule.py", line 3, in test2 93 print(spam) 94 NameError: spam 95 >>> pdb.pm() 96 > ./mymodule.py(3)test2() 97 -> print(spam) 98 (Pdb) 99 100 101The module defines the following functions; each enters the debugger in a 102slightly different way: 103 104.. function:: run(statement, globals=None, locals=None) 105 106 Execute the *statement* (given as a string or a code object) under debugger 107 control. The debugger prompt appears before any code is executed; you can 108 set breakpoints and type :pdbcmd:`continue`, or you can step through the 109 statement using :pdbcmd:`step` or :pdbcmd:`next` (all these commands are 110 explained below). The optional *globals* and *locals* arguments specify the 111 environment in which the code is executed; by default the dictionary of the 112 module :mod:`__main__` is used. (See the explanation of the built-in 113 :func:`exec` or :func:`eval` functions.) 114 115 116.. function:: runeval(expression, globals=None, locals=None) 117 118 Evaluate the *expression* (given as a string or a code object) under debugger 119 control. When :func:`runeval` returns, it returns the value of the 120 expression. Otherwise this function is similar to :func:`run`. 121 122 123.. function:: runcall(function, *args, **kwds) 124 125 Call the *function* (a function or method object, not a string) with the 126 given arguments. When :func:`runcall` returns, it returns whatever the 127 function call returned. The debugger prompt appears as soon as the function 128 is entered. 129 130 131.. function:: set_trace(*, header=None) 132 133 Enter the debugger at the calling stack frame. This is useful to hard-code 134 a breakpoint at a given point in a program, even if the code is not 135 otherwise being debugged (e.g. when an assertion fails). If given, 136 *header* is printed to the console just before debugging begins. 137 138 .. versionchanged:: 3.7 139 The keyword-only argument *header*. 140 141 142.. function:: post_mortem(traceback=None) 143 144 Enter post-mortem debugging of the given *traceback* object. If no 145 *traceback* is given, it uses the one of the exception that is currently 146 being handled (an exception must be being handled if the default is to be 147 used). 148 149 150.. function:: pm() 151 152 Enter post-mortem debugging of the traceback found in 153 :data:`sys.last_traceback`. 154 155 156The ``run*`` functions and :func:`set_trace` are aliases for instantiating the 157:class:`Pdb` class and calling the method of the same name. If you want to 158access further features, you have to do this yourself: 159 160.. class:: Pdb(completekey='tab', stdin=None, stdout=None, skip=None, \ 161 nosigint=False, readrc=True) 162 163 :class:`Pdb` is the debugger class. 164 165 The *completekey*, *stdin* and *stdout* arguments are passed to the 166 underlying :class:`cmd.Cmd` class; see the description there. 167 168 The *skip* argument, if given, must be an iterable of glob-style module name 169 patterns. The debugger will not step into frames that originate in a module 170 that matches one of these patterns. [1]_ 171 172 By default, Pdb sets a handler for the SIGINT signal (which is sent when the 173 user presses :kbd:`Ctrl-C` on the console) when you give a ``continue`` command. 174 This allows you to break into the debugger again by pressing :kbd:`Ctrl-C`. If you 175 want Pdb not to touch the SIGINT handler, set *nosigint* to true. 176 177 The *readrc* argument defaults to true and controls whether Pdb will load 178 .pdbrc files from the filesystem. 179 180 Example call to enable tracing with *skip*:: 181 182 import pdb; pdb.Pdb(skip=['django.*']).set_trace() 183 184 .. versionadded:: 3.1 185 The *skip* argument. 186 187 .. versionadded:: 3.2 188 The *nosigint* argument. Previously, a SIGINT handler was never set by 189 Pdb. 190 191 .. versionchanged:: 3.6 192 The *readrc* argument. 193 194 .. method:: run(statement, globals=None, locals=None) 195 runeval(expression, globals=None, locals=None) 196 runcall(function, *args, **kwds) 197 set_trace() 198 199 See the documentation for the functions explained above. 200 201 202.. _debugger-commands: 203 204Debugger Commands 205----------------- 206 207The commands recognized by the debugger are listed below. Most commands can be 208abbreviated to one or two letters as indicated; e.g. ``h(elp)`` means that 209either ``h`` or ``help`` can be used to enter the help command (but not ``he`` 210or ``hel``, nor ``H`` or ``Help`` or ``HELP``). Arguments to commands must be 211separated by whitespace (spaces or tabs). Optional arguments are enclosed in 212square brackets (``[]``) in the command syntax; the square brackets must not be 213typed. Alternatives in the command syntax are separated by a vertical bar 214(``|``). 215 216Entering a blank line repeats the last command entered. Exception: if the last 217command was a :pdbcmd:`list` command, the next 11 lines are listed. 218 219Commands that the debugger doesn't recognize are assumed to be Python statements 220and are executed in the context of the program being debugged. Python 221statements can also be prefixed with an exclamation point (``!``). This is a 222powerful way to inspect the program being debugged; it is even possible to 223change a variable or call a function. When an exception occurs in such a 224statement, the exception name is printed but the debugger's state is not 225changed. 226 227The debugger supports :ref:`aliases <debugger-aliases>`. Aliases can have 228parameters which allows one a certain level of adaptability to the context under 229examination. 230 231Multiple commands may be entered on a single line, separated by ``;;``. (A 232single ``;`` is not used as it is the separator for multiple commands in a line 233that is passed to the Python parser.) No intelligence is applied to separating 234the commands; the input is split at the first ``;;`` pair, even if it is in the 235middle of a quoted string. 236 237.. index:: 238 pair: .pdbrc; file 239 triple: debugger; configuration; file 240 241If a file :file:`.pdbrc` exists in the user's home directory or in the current 242directory, it is read in and executed as if it had been typed at the debugger 243prompt. This is particularly useful for aliases. If both files exist, the one 244in the home directory is read first and aliases defined there can be overridden 245by the local file. 246 247.. versionchanged:: 3.2 248 :file:`.pdbrc` can now contain commands that continue debugging, such as 249 :pdbcmd:`continue` or :pdbcmd:`next`. Previously, these commands had no 250 effect. 251 252 253.. pdbcommand:: h(elp) [command] 254 255 Without argument, print the list of available commands. With a *command* as 256 argument, print help about that command. ``help pdb`` displays the full 257 documentation (the docstring of the :mod:`pdb` module). Since the *command* 258 argument must be an identifier, ``help exec`` must be entered to get help on 259 the ``!`` command. 260 261.. pdbcommand:: w(here) 262 263 Print a stack trace, with the most recent frame at the bottom. An arrow 264 indicates the current frame, which determines the context of most commands. 265 266.. pdbcommand:: d(own) [count] 267 268 Move the current frame *count* (default one) levels down in the stack trace 269 (to a newer frame). 270 271.. pdbcommand:: u(p) [count] 272 273 Move the current frame *count* (default one) levels up in the stack trace (to 274 an older frame). 275 276.. pdbcommand:: b(reak) [([filename:]lineno | function) [, condition]] 277 278 With a *lineno* argument, set a break there in the current file. With a 279 *function* argument, set a break at the first executable statement within 280 that function. The line number may be prefixed with a filename and a colon, 281 to specify a breakpoint in another file (probably one that hasn't been loaded 282 yet). The file is searched on :data:`sys.path`. Note that each breakpoint 283 is assigned a number to which all the other breakpoint commands refer. 284 285 If a second argument is present, it is an expression which must evaluate to 286 true before the breakpoint is honored. 287 288 Without argument, list all breaks, including for each breakpoint, the number 289 of times that breakpoint has been hit, the current ignore count, and the 290 associated condition if any. 291 292.. pdbcommand:: tbreak [([filename:]lineno | function) [, condition]] 293 294 Temporary breakpoint, which is removed automatically when it is first hit. 295 The arguments are the same as for :pdbcmd:`break`. 296 297.. pdbcommand:: cl(ear) [filename:lineno | bpnumber [bpnumber ...]] 298 299 With a *filename:lineno* argument, clear all the breakpoints at this line. 300 With a space separated list of breakpoint numbers, clear those breakpoints. 301 Without argument, clear all breaks (but first ask confirmation). 302 303.. pdbcommand:: disable [bpnumber [bpnumber ...]] 304 305 Disable the breakpoints given as a space separated list of breakpoint 306 numbers. Disabling a breakpoint means it cannot cause the program to stop 307 execution, but unlike clearing a breakpoint, it remains in the list of 308 breakpoints and can be (re-)enabled. 309 310.. pdbcommand:: enable [bpnumber [bpnumber ...]] 311 312 Enable the breakpoints specified. 313 314.. pdbcommand:: ignore bpnumber [count] 315 316 Set the ignore count for the given breakpoint number. If count is omitted, 317 the ignore count is set to 0. A breakpoint becomes active when the ignore 318 count is zero. When non-zero, the count is decremented each time the 319 breakpoint is reached and the breakpoint is not disabled and any associated 320 condition evaluates to true. 321 322.. pdbcommand:: condition bpnumber [condition] 323 324 Set a new *condition* for the breakpoint, an expression which must evaluate 325 to true before the breakpoint is honored. If *condition* is absent, any 326 existing condition is removed; i.e., the breakpoint is made unconditional. 327 328.. pdbcommand:: commands [bpnumber] 329 330 Specify a list of commands for breakpoint number *bpnumber*. The commands 331 themselves appear on the following lines. Type a line containing just 332 ``end`` to terminate the commands. An example:: 333 334 (Pdb) commands 1 335 (com) p some_variable 336 (com) end 337 (Pdb) 338 339 To remove all commands from a breakpoint, type ``commands`` and follow it 340 immediately with ``end``; that is, give no commands. 341 342 With no *bpnumber* argument, ``commands`` refers to the last breakpoint set. 343 344 You can use breakpoint commands to start your program up again. Simply use 345 the :pdbcmd:`continue` command, or :pdbcmd:`step`, 346 or any other command that resumes execution. 347 348 Specifying any command resuming execution 349 (currently :pdbcmd:`continue`, :pdbcmd:`step`, :pdbcmd:`next`, 350 :pdbcmd:`return`, :pdbcmd:`jump`, :pdbcmd:`quit` and their abbreviations) 351 terminates the command list (as if 352 that command was immediately followed by end). This is because any time you 353 resume execution (even with a simple next or step), you may encounter another 354 breakpoint—which could have its own command list, leading to ambiguities about 355 which list to execute. 356 357 If you use the 'silent' command in the command list, the usual message about 358 stopping at a breakpoint is not printed. This may be desirable for breakpoints 359 that are to print a specific message and then continue. If none of the other 360 commands print anything, you see no sign that the breakpoint was reached. 361 362.. pdbcommand:: s(tep) 363 364 Execute the current line, stop at the first possible occasion (either in a 365 function that is called or on the next line in the current function). 366 367.. pdbcommand:: n(ext) 368 369 Continue execution until the next line in the current function is reached or 370 it returns. (The difference between :pdbcmd:`next` and :pdbcmd:`step` is 371 that :pdbcmd:`step` stops inside a called function, while :pdbcmd:`next` 372 executes called functions at (nearly) full speed, only stopping at the next 373 line in the current function.) 374 375.. pdbcommand:: unt(il) [lineno] 376 377 Without argument, continue execution until the line with a number greater 378 than the current one is reached. 379 380 With a line number, continue execution until a line with a number greater or 381 equal to that is reached. In both cases, also stop when the current frame 382 returns. 383 384 .. versionchanged:: 3.2 385 Allow giving an explicit line number. 386 387.. pdbcommand:: r(eturn) 388 389 Continue execution until the current function returns. 390 391.. pdbcommand:: c(ont(inue)) 392 393 Continue execution, only stop when a breakpoint is encountered. 394 395.. pdbcommand:: j(ump) lineno 396 397 Set the next line that will be executed. Only available in the bottom-most 398 frame. This lets you jump back and execute code again, or jump forward to 399 skip code that you don't want to run. 400 401 It should be noted that not all jumps are allowed -- for instance it is not 402 possible to jump into the middle of a :keyword:`for` loop or out of a 403 :keyword:`finally` clause. 404 405.. pdbcommand:: l(ist) [first[, last]] 406 407 List source code for the current file. Without arguments, list 11 lines 408 around the current line or continue the previous listing. With ``.`` as 409 argument, list 11 lines around the current line. With one argument, 410 list 11 lines around at that line. With two arguments, list the given range; 411 if the second argument is less than the first, it is interpreted as a count. 412 413 The current line in the current frame is indicated by ``->``. If an 414 exception is being debugged, the line where the exception was originally 415 raised or propagated is indicated by ``>>``, if it differs from the current 416 line. 417 418 .. versionadded:: 3.2 419 The ``>>`` marker. 420 421.. pdbcommand:: ll | longlist 422 423 List all source code for the current function or frame. Interesting lines 424 are marked as for :pdbcmd:`list`. 425 426 .. versionadded:: 3.2 427 428.. pdbcommand:: a(rgs) 429 430 Print the argument list of the current function. 431 432.. pdbcommand:: p expression 433 434 Evaluate the *expression* in the current context and print its value. 435 436 .. note:: 437 438 ``print()`` can also be used, but is not a debugger command --- this executes the 439 Python :func:`print` function. 440 441 442.. pdbcommand:: pp expression 443 444 Like the :pdbcmd:`p` command, except the value of the expression is 445 pretty-printed using the :mod:`pprint` module. 446 447.. pdbcommand:: whatis expression 448 449 Print the type of the *expression*. 450 451.. pdbcommand:: source expression 452 453 Try to get source code for the given object and display it. 454 455 .. versionadded:: 3.2 456 457.. pdbcommand:: display [expression] 458 459 Display the value of the expression if it changed, each time execution stops 460 in the current frame. 461 462 Without expression, list all display expressions for the current frame. 463 464 .. versionadded:: 3.2 465 466.. pdbcommand:: undisplay [expression] 467 468 Do not display the expression any more in the current frame. Without 469 expression, clear all display expressions for the current frame. 470 471 .. versionadded:: 3.2 472 473.. pdbcommand:: interact 474 475 Start an interactive interpreter (using the :mod:`code` module) whose global 476 namespace contains all the (global and local) names found in the current 477 scope. 478 479 .. versionadded:: 3.2 480 481.. _debugger-aliases: 482 483.. pdbcommand:: alias [name [command]] 484 485 Create an alias called *name* that executes *command*. The command must 486 *not* be enclosed in quotes. Replaceable parameters can be indicated by 487 ``%1``, ``%2``, and so on, while ``%*`` is replaced by all the parameters. 488 If no command is given, the current alias for *name* is shown. If no 489 arguments are given, all aliases are listed. 490 491 Aliases may be nested and can contain anything that can be legally typed at 492 the pdb prompt. Note that internal pdb commands *can* be overridden by 493 aliases. Such a command is then hidden until the alias is removed. Aliasing 494 is recursively applied to the first word of the command line; all other words 495 in the line are left alone. 496 497 As an example, here are two useful aliases (especially when placed in the 498 :file:`.pdbrc` file):: 499 500 # Print instance variables (usage "pi classInst") 501 alias pi for k in %1.__dict__.keys(): print("%1.",k,"=",%1.__dict__[k]) 502 # Print instance variables in self 503 alias ps pi self 504 505.. pdbcommand:: unalias name 506 507 Delete the specified alias. 508 509.. pdbcommand:: ! statement 510 511 Execute the (one-line) *statement* in the context of the current stack frame. 512 The exclamation point can be omitted unless the first word of the statement 513 resembles a debugger command. To set a global variable, you can prefix the 514 assignment command with a :keyword:`global` statement on the same line, 515 e.g.:: 516 517 (Pdb) global list_options; list_options = ['-l'] 518 (Pdb) 519 520.. pdbcommand:: run [args ...] 521 restart [args ...] 522 523 Restart the debugged Python program. If an argument is supplied, it is split 524 with :mod:`shlex` and the result is used as the new :data:`sys.argv`. 525 History, breakpoints, actions and debugger options are preserved. 526 :pdbcmd:`restart` is an alias for :pdbcmd:`run`. 527 528.. pdbcommand:: q(uit) 529 530 Quit from the debugger. The program being executed is aborted. 531 532 533.. rubric:: Footnotes 534 535.. [1] Whether a frame is considered to originate in a certain module 536 is determined by the ``__name__`` in the frame globals. 537