blob: 4fe8ad1cc39bbc170cd715febdc81e44fa5c7b24 [file] [log] [blame]
Guido van Rossumf4aac481995-03-02 12:37:55 +00001\chapter{The Python Debugger}
Fred Drake31ecd501998-02-18 15:40:11 +00002\label{module-pdb}
Guido van Rossumdc46c7f1995-03-01 15:38:16 +00003\stmodindex{pdb}
4\index{debugging}
5
Fred Drake19479911998-02-13 06:58:54 +00006\setindexsubitem{(in module pdb)}
Guido van Rossumf4aac481995-03-02 12:37:55 +00007
8The module \code{pdb} defines an interactive source code debugger for
Guido van Rossum255d7901997-07-11 13:51:17 +00009Python programs. It supports setting
10(conditional) breakpoints and single stepping
Guido van Rossumf4aac481995-03-02 12:37:55 +000011at the source line level, inspection of stack frames, source code
12listing, and evaluation of arbitrary Python code in the context of any
13stack frame. It also supports post-mortem debugging and can be called
14under program control.
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000015
16The debugger is extensible --- it is actually defined as a class
Guido van Rossum25f6fcc1995-04-04 12:28:53 +000017\code{Pdb}. This is currently undocumented but easily understood by
18reading the source. The extension interface uses the (also
19undocumented) modules \code{bdb} and \code{cmd}.
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000020\ttindex{Pdb}
21\ttindex{bdb}
22\ttindex{cmd}
23
24A primitive windowing version of the debugger also exists --- this is
Guido van Rossumf4aac481995-03-02 12:37:55 +000025module \code{wdb}, which requires STDWIN (see the chapter on STDWIN
26specific modules).
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000027\index{stdwin}
28\ttindex{wdb}
29
Guido van Rossum25f6fcc1995-04-04 12:28:53 +000030The debugger's prompt is ``\code{(Pdb) }''.
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000031Typical usage to run a program under control of the debugger is:
32
Fred Drake19479911998-02-13 06:58:54 +000033\begin{verbatim}
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000034>>> import pdb
35>>> import mymodule
36>>> pdb.run('mymodule.test()')
Guido van Rossum25f6fcc1995-04-04 12:28:53 +000037> <string>(0)?()
38(Pdb) continue
39> <string>(1)?()
40(Pdb) continue
41NameError: 'spam'
42> <string>(1)?()
43(Pdb)
Fred Drake19479911998-02-13 06:58:54 +000044\end{verbatim}
Guido van Rossume47da0a1997-07-17 16:34:52 +000045%
Guido van Rossum809408e1997-06-02 17:28:16 +000046\code{pdb.py} can also be invoked as
47a script to debug other scripts. For example:
48\code{python /usr/local/lib/python1.4/pdb.py myscript.py}
49
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000050Typical usage to inspect a crashed program is:
51
Fred Drake19479911998-02-13 06:58:54 +000052\begin{verbatim}
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000053>>> import pdb
54>>> import mymodule
55>>> mymodule.test()
Guido van Rossum25f6fcc1995-04-04 12:28:53 +000056Traceback (innermost last):
57 File "<stdin>", line 1, in ?
58 File "./mymodule.py", line 4, in test
59 test2()
60 File "./mymodule.py", line 3, in test2
61 print spam
62NameError: spam
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000063>>> pdb.pm()
Guido van Rossum25f6fcc1995-04-04 12:28:53 +000064> ./mymodule.py(3)test2()
65-> print spam
66(Pdb)
Fred Drake19479911998-02-13 06:58:54 +000067\end{verbatim}
Guido van Rossume47da0a1997-07-17 16:34:52 +000068%
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000069The module defines the following functions; each enters the debugger
70in a slightly different way:
71
Fred Drakecce10901998-03-17 06:33:25 +000072\begin{funcdesc}{run}{statement\optional{, globals\optional{, locals}}}
Guido van Rossumf4aac481995-03-02 12:37:55 +000073Execute the \var{statement} (given as a string) under debugger
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000074control. The debugger prompt appears before any code is executed; you
Guido van Rossumf4aac481995-03-02 12:37:55 +000075can set breakpoints and type \code{continue}, or you can step through
76the statement using \code{step} or \code{next} (all these commands are
77explained below). The optional \var{globals} and \var{locals}
78arguments specify the environment in which the code is executed; by
79default the dictionary of the module \code{__main__} is used. (See
80the explanation of the \code{exec} statement or the \code{eval()}
81built-in function.)
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000082\end{funcdesc}
83
Fred Drakecce10901998-03-17 06:33:25 +000084\begin{funcdesc}{runeval}{expression\optional{, globals\optional{, locals}}}
Guido van Rossumf4aac481995-03-02 12:37:55 +000085Evaluate the \var{expression} (given as a a string) under debugger
86control. When \code{runeval()} returns, it returns the value of the
87expression. Otherwise this function is similar to
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000088\code{run()}.
89\end{funcdesc}
90
Fred Drakecce10901998-03-17 06:33:25 +000091\begin{funcdesc}{runcall}{function\optional{, argument, ...}}
Guido van Rossumf4aac481995-03-02 12:37:55 +000092Call the \var{function} (a function or method object, not a string)
93with the given arguments. When \code{runcall()} returns, it returns
94whatever the function call returned. The debugger prompt appears as
95soon as the function is entered.
Guido van Rossumdc46c7f1995-03-01 15:38:16 +000096\end{funcdesc}
97
98\begin{funcdesc}{set_trace}{}
99Enter the debugger at the calling stack frame. This is useful to
Guido van Rossumf4aac481995-03-02 12:37:55 +0000100hard-code a breakpoint at a given point in a program, even if the code
101is not otherwise being debugged (e.g. when an assertion fails).
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000102\end{funcdesc}
103
104\begin{funcdesc}{post_mortem}{traceback}
105Enter post-mortem debugging of the given \var{traceback} object.
106\end{funcdesc}
107
108\begin{funcdesc}{pm}{}
Guido van Rossumf4aac481995-03-02 12:37:55 +0000109Enter post-mortem debugging of the traceback found in
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000110\code{sys.last_traceback}.
111\end{funcdesc}
112
Guido van Rossum470be141995-03-17 16:07:09 +0000113\section{Debugger Commands}
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000114
115The debugger recognizes the following commands. Most commands can be
116abbreviated to one or two letters; e.g. ``\code{h(elp)}'' means that
117either ``\code{h}'' or ``\code{help}'' can be used to enter the help
118command (but not ``\code{he}'' or ``\code{hel}'', nor ``\code{H}'' or
119``\code{Help} or ``\code{HELP}''). Arguments to commands must be
120separated by whitespace (spaces or tabs). Optional arguments are
Guido van Rossum6c4f0031995-03-07 10:14:09 +0000121enclosed in square brackets (``\code{[]}'') in the command syntax; the
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000122square brackets must not be typed. Alternatives in the command syntax
123are separated by a vertical bar (``\code{|}'').
124
125Entering a blank line repeats the last command entered. Exception: if
126the last command was a ``\code{list}'' command, the next 11 lines are
127listed.
128
129Commands that the debugger doesn't recognize are assumed to be Python
130statements and are executed in the context of the program being
131debugged. Python statements can also be prefixed with an exclamation
132point (``\code{!}''). This is a powerful way to inspect the program
Guido van Rossum25f6fcc1995-04-04 12:28:53 +0000133being debugged; it is even possible to change a variable or call a
134function. When an
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000135exception occurs in such a statement, the exception name is printed
136but the debugger's state is not changed.
137
138\begin{description}
139
Fred Drake74947ac1998-01-12 15:38:30 +0000140\item[h(elp) \optional{\var{command}}]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000141
Fred Drake74947ac1998-01-12 15:38:30 +0000142Without argument, print the list of available commands. With a
143\var{command} as argument, print help about that command. \samp{help
144pdb} displays the full documentation file; if the environment variable
145\code{PAGER} is defined, the file is piped through that command
146instead. Since the \var{command} argument must be an identifier,
147\samp{help exec} must be entered to get help on the \samp{!} command.
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000148
Guido van Rossum470be141995-03-17 16:07:09 +0000149\item[w(here)]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000150
Fred Drake74947ac1998-01-12 15:38:30 +0000151Print a stack trace, with the most recent frame at the bottom. An
152arrow indicates the current frame, which determines the context of
153most commands.
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000154
Guido van Rossum470be141995-03-17 16:07:09 +0000155\item[d(own)]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000156
157Move the current frame one level down in the stack trace
158(to an older frame).
159
Guido van Rossum470be141995-03-17 16:07:09 +0000160\item[u(p)]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000161
162Move the current frame one level up in the stack trace
163(to a newer frame).
164
Fred Drakec9274071998-02-19 15:18:02 +0000165\item[b(reak) \optional{\var{lineno}\code{\Large|}\var{function}%
Fred Drake74947ac1998-01-12 15:38:30 +0000166 \optional{, \code{'}\var{condition}\code{'}}}]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000167
168With a \var{lineno} argument, set a break there in the current
169file. With a \var{function} argument, set a break at the entry of
170that function. Without argument, list all breaks.
Guido van Rossum31cbc841997-07-11 13:57:28 +0000171If a second argument is present, it is a string (included in string
172quotes!) specifying an expression which must evaluate to true before
173the breakpoint is honored.
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000174
Fred Drake74947ac1998-01-12 15:38:30 +0000175\item[cl(ear) \optional{\var{lineno}}]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000176
177With a \var{lineno} argument, clear that break in the current file.
178Without argument, clear all breaks (but first ask confirmation).
179
Guido van Rossum470be141995-03-17 16:07:09 +0000180\item[s(tep)]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000181
182Execute the current line, stop at the first possible occasion
183(either in a function that is called or on the next line in the
184current function).
185
Guido van Rossum470be141995-03-17 16:07:09 +0000186\item[n(ext)]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000187
188Continue execution until the next line in the current function
189is reached or it returns. (The difference between \code{next} and
190\code{step} is that \code{step} stops inside a called function, while
Guido van Rossumf4aac481995-03-02 12:37:55 +0000191\code{next} executes called functions at (nearly) full speed, only
192stopping at the next line in the current function.)
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000193
Guido van Rossum470be141995-03-17 16:07:09 +0000194\item[r(eturn)]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000195
196Continue execution until the current function returns.
197
Guido van Rossum470be141995-03-17 16:07:09 +0000198\item[c(ont(inue))]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000199
200Continue execution, only stop when a breakpoint is encountered.
201
Fred Drake74947ac1998-01-12 15:38:30 +0000202\item[l(ist) \optional{\var{first\optional{, last}}}]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000203
Guido van Rossumf4aac481995-03-02 12:37:55 +0000204List source code for the current file. Without arguments, list 11
205lines around the current line or continue the previous listing. With
206one argument, list 11 lines around at that line. With two arguments,
207list the given range; if the second argument is less than the first,
208it is interpreted as a count.
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000209
Guido van Rossum470be141995-03-17 16:07:09 +0000210\item[a(rgs)]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000211
212Print the argument list of the current function.
213
Guido van Rossum470be141995-03-17 16:07:09 +0000214\item[p \var{expression}]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000215
216Evaluate the \var{expression} in the current context and print its
Guido van Rossumf4aac481995-03-02 12:37:55 +0000217value. (Note: \code{print} can also be used, but is not a debugger
218command --- this executes the Python \code{print} statement.)
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000219
Fred Drake74947ac1998-01-12 15:38:30 +0000220\item[\optional{!}\var{statement}]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000221
222Execute the (one-line) \var{statement} in the context of
223the current stack frame.
224The exclamation point can be omitted unless the first word
225of the statement resembles a debugger command.
226To set a global variable, you can prefix the assignment
227command with a ``\code{global}'' command on the same line, e.g.:
Fred Drake19479911998-02-13 06:58:54 +0000228\begin{verbatim}
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000229(Pdb) global list_options; list_options = ['-l']
230(Pdb)
Fred Drake19479911998-02-13 06:58:54 +0000231\end{verbatim}
Guido van Rossume47da0a1997-07-17 16:34:52 +0000232%
Guido van Rossum470be141995-03-17 16:07:09 +0000233\item[q(uit)]
Guido van Rossumdc46c7f1995-03-01 15:38:16 +0000234
235Quit from the debugger.
236The program being executed is aborted.
237
238\end{description}
Guido van Rossum470be141995-03-17 16:07:09 +0000239
240\section{How It Works}
241
242Some changes were made to the interpreter:
243
244\begin{itemize}
Fred Drake74947ac1998-01-12 15:38:30 +0000245\item \code{sys.settrace(\var{func})} sets the global trace function
Guido van Rossum470be141995-03-17 16:07:09 +0000246\item there can also a local trace function (see later)
247\end{itemize}
248
249Trace functions have three arguments: (\var{frame}, \var{event}, \var{arg})
250
251\begin{description}
252
253\item[\var{frame}] is the current stack frame
254
255\item[\var{event}] is a string: \code{'call'}, \code{'line'}, \code{'return'}
256or \code{'exception'}
257
258\item[\var{arg}] is dependent on the event type
259
260\end{description}
261
Guido van Rossum9d37a4d1997-10-27 19:57:20 +0000262The global trace function is invoked (with \var{event} set to
263\code{'call'}) whenever a new local scope is entered; it should return
264a reference to the local trace function to be used that scope, or
265\code{None} if the scope shouldn't be traced.
266
267The local trace function should return a reference to itself (or to
268another function for further tracing in that scope), or \code{None} to
269turn off tracing in that scope.
270
271Instance methods are accepted (and very useful!) as trace functions.
Guido van Rossum470be141995-03-17 16:07:09 +0000272
273The events have the following meaning:
274
275\begin{description}
276
277\item[\code{'call'}]
278A function is called (or some other code block entered). The global
279trace function is called; arg is the argument list to the function;
280the return value specifies the local trace function.
281
282\item[\code{'line'}]
283The interpreter is about to execute a new line of code (sometimes
284multiple line events on one line exist). The local trace function is
285called; arg in None; the return value specifies the new local trace
286function.
287
288\item[\code{'return'}]
289A function (or other code block) is about to return. The local trace
290function is called; arg is the value that will be returned. The trace
291function's return value is ignored.
292
293\item[\code{'exception'}]
294An exception has occurred. The local trace function is called; arg is
295a triple (exception, value, traceback); the return value specifies the
296new local trace function
297
298\end{description}
299
300Note that as an exception is propagated down the chain of callers, an
301\code{'exception'} event is generated at each level.
302
Fred Drakebc8ad5b1998-03-11 06:29:59 +0000303For more information on code and frame objects, refer to the
304\emph{Python Reference Manual}.