| The Python Debugger Pdb | 
 | ======================= | 
 |  | 
 | To use the debugger in its simplest form: | 
 |  | 
 |         >>> import pdb | 
 |         >>> pdb.run('<a statement>') | 
 |  | 
 | The debugger's prompt is '(Pdb) '.  This will stop in the first | 
 | function call in <a statement>. | 
 |  | 
 | Alternatively, if a statement terminated with an unhandled exception, | 
 | you can use pdb's post-mortem facility to inspect the contents of the | 
 | traceback: | 
 |  | 
 |         >>> <a statement> | 
 |         <exception traceback> | 
 |         >>> import pdb | 
 |         >>> pdb.pm() | 
 |  | 
 | The commands recognized by the debugger are listed in the next | 
 | section.  Most can be abbreviated as indicated; e.g., h(elp) means | 
 | that 'help' can be typed as 'h' or 'help' (but not as 'he' or 'hel', | 
 | nor as 'H' or 'Help' or 'HELP').  Optional arguments are enclosed in | 
 | square brackets. | 
 |  | 
 | A blank line repeats the previous command literally, except for | 
 | 'list', where it lists the next 11 lines. | 
 |  | 
 | 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 ('!').  This is a powerful way to inspect the program being | 
 | debugged; it is even possible to change variables.  When an exception | 
 | occurs in such a statement, the exception name is printed but the | 
 | debugger's state is not changed. | 
 |  | 
 | The debugger supports aliases, which can save typing.  And aliases can | 
 | have parameters (see the alias help entry) which allows one a certain | 
 | level of adaptability to the context under examination. | 
 |  | 
 | Multiple commands may be entered on a single line, separated by the | 
 | pair ';;'.  No intelligence is applied to separating the commands; the | 
 | input is split at the first ';;', even if it is in the middle of a | 
 | quoted string. | 
 |  | 
 | If a file ".pdbrc" exists in your 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 overriden by the local file. | 
 |  | 
 | Aside from aliases, the debugger is not directly programmable; but it | 
 | is implemented as a class from which you can derive your own debugger | 
 | class, which you can make as fancy as you like. | 
 |  | 
 |  | 
 | Debugger commands | 
 | ================= | 
 |  | 
 | h(elp) | 
 |         Without argument, print the list of available commands.  With | 
 |         a command name as argument, print help about that command | 
 |         (this is currently not implemented). | 
 |  | 
 | w(here) | 
 |         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. | 
 |  | 
 | d(own) | 
 |         Move the current frame one level down in the stack trace | 
 |         (to an older frame). | 
 |  | 
 | u(p) | 
 |         Move the current frame one level up in the stack trace | 
 |         (to a newer frame). | 
 |  | 
 | b(reak) [ ([filename:]lineno | function) [, condition] ] | 
 |         With a filename:line number argument, set a break there.  If | 
 |         filename is omitted, use the current file.  With a function | 
 |         name, set a break at the first executable line of that | 
 |         function.  Without argument, list all breaks.  Each breakpoint | 
 |         is assigned a number to which all the other breakpoint | 
 |         commands refer. | 
 |  | 
 |         The condition argument, if present, is a string which must | 
 |         evaluate to true in order for the breakpoint to be honored. | 
 |  | 
 | tbreak [ ([filename:]lineno | function) [, condition] ] | 
 |         Temporary breakpoint, which is removed automatically when it | 
 |         is first hit.  The arguments are the same as break. | 
 |  | 
 | cl(ear) [bpnumber [bpnumber ...] ] | 
 |         With a space separated list of breakpoint numbers, clear those | 
 |         breakpoints.  Without argument, clear all breaks (but first | 
 |         ask confirmation). | 
 |  | 
 | disable bpnumber [bpnumber ...] | 
 |         Disables 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. | 
 |  | 
 | enable bpnumber [bpnumber ...] | 
 |         Enables the breakpoints specified. | 
 |  | 
 | ignore bpnumber count | 
 |         Sets 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. | 
 |  | 
 | condition bpnumber condition | 
 |         condition is an expression which must evaluate to true before | 
 |         the breakpoint is honored.  If condition is absent, any | 
 |         existing condition is removed; i.e., the breakpoint is made | 
 |         unconditional. | 
 |  | 
 | s(tep) | 
 |         Execute the current line, stop at the first possible occasion | 
 |         (either in a function that is called or in the current function). | 
 |  | 
 | n(ext) | 
 |         Continue execution until the next line in the current function | 
 |         is reached or it returns. | 
 |  | 
 | r(eturn) | 
 |         Continue execution until the current function returns. | 
 |  | 
 | c(ont(inue)) | 
 |         Continue execution, only stop when a breakpoint is encountered. | 
 |  | 
 | l(ist) [first [,last]] | 
 |         List source code for the current file. | 
 |         Without arguments, list 11 lines around the current line | 
 |         or continue the previous listing. | 
 |         With one argument, list 11 lines starting at that line. | 
 |         With two arguments, list the given range; | 
 |         if the second argument is less than the first, it is a count. | 
 |  | 
 | a(rgs) | 
 |         Print the argument list of the current function. | 
 |  | 
 | p expression | 
 |         Print the value of the expression. | 
 |  | 
 | (!) statement | 
 |         Execute the (one-line) statement 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 | 
 |         assign to a global variable you must always prefix the command | 
 |         with a 'global' command, e.g.: | 
 |         (Pdb) global list_options; list_options = ['-l'] | 
 |         (Pdb) | 
 |  | 
 |  | 
 | whatis arg | 
 |          Prints the type of the argument. | 
 |  | 
 | alias [name [command]] | 
 |         Creates an alias called 'name' that executes 'command'.  The | 
 |         command must *not* be enclosed in quotes.  Replaceable | 
 |         parameters can be indicated by %1, %2, and so on, while %* is | 
 |         replaced by all the parameters.  If no command is given, the | 
 |         current alias for name is shown. If no name is given, all | 
 |         aliases are listed. | 
 |  | 
 |         Aliases may be nested and can contain anything that can be | 
 |         legally typed at the pdb prompt.  Note!  You *can* override | 
 |         internal pdb commands with aliases!  Those internal commands | 
 |         are 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. | 
 |  | 
 |         As an example, here are two useful aliases (especially when | 
 |         placed in the .pdbrc file): | 
 |  | 
 |         #Print instance variables (usage "pi classInst") | 
 |         alias pi for k in %1.__dict__.keys(): print "%1.",k,"=",%1.__dict__[k] | 
 |         #Print instance variables in self | 
 |         alias ps pi self | 
 |                  | 
 | unalias name | 
 |         Deletes the specified alias. | 
 |  | 
 | q(uit) | 
 |         Quit from the debugger. | 
 |         The program being executed is aborted. |