~ubuntu-branches/ubuntu/maverick/python3.1/maverick

« back to all changes in this revision

Viewing changes to Doc/library/bdb.rst

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-03-23 00:01:27 UTC
  • Revision ID: james.westby@ubuntu.com-20090323000127-5fstfxju4ufrhthq
Tags: upstream-3.1~a1+20090322
ImportĀ upstreamĀ versionĀ 3.1~a1+20090322

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
:mod:`bdb` --- Debugger framework
 
2
=================================
 
3
 
 
4
.. module:: bdb
 
5
   :synopsis: Debugger framework.
 
6
 
 
7
The :mod:`bdb` module handles basic debugger functions, like setting breakpoints
 
8
or managing execution via the debugger.
 
9
 
 
10
The following exception is defined:
 
11
 
 
12
.. exception:: BdbQuit
 
13
 
 
14
   Exception raised by the :class:`Bdb` class for quitting the debugger.
 
15
 
 
16
 
 
17
The :mod:`bdb` module also defines two classes:
 
18
 
 
19
.. class:: Breakpoint(self, file, line[, temporary=0[, cond=None [, funcname=None]]])
 
20
 
 
21
   This class implements temporary breakpoints, ignore counts, disabling and
 
22
   (re-)enabling, and conditionals.
 
23
 
 
24
   Breakpoints are indexed by number through a list called :attr:`bpbynumber`
 
25
   and by ``(file, line)`` pairs through :attr:`bplist`.  The former points to a
 
26
   single instance of class :class:`Breakpoint`.  The latter points to a list of
 
27
   such instances since there may be more than one breakpoint per line.
 
28
 
 
29
   When creating a breakpoint, its associated filename should be in canonical
 
30
   form.  If a *funcname* is defined, a breakpoint hit will be counted when the
 
31
   first line of that function is executed.  A conditional breakpoint always
 
32
   counts a hit.
 
33
 
 
34
   :class:`Breakpoint` instances have the following methods:
 
35
 
 
36
   .. method:: deleteMe()
 
37
 
 
38
      Delete the breakpoint from the list associated to a file/line.  If it is
 
39
      the last breakpoint in that position, it also deletes the entry for the
 
40
      file/line.
 
41
 
 
42
 
 
43
   .. method:: enable()
 
44
 
 
45
      Mark the breakpoint as enabled.
 
46
 
 
47
 
 
48
   .. method:: disable()
 
49
 
 
50
      Mark the breakpoint as disabled.
 
51
 
 
52
 
 
53
   .. method:: pprint([out])
 
54
 
 
55
      Print all the information about the breakpoint:
 
56
 
 
57
      * The breakpoint number.
 
58
      * If it is temporary or not.
 
59
      * Its file,line position.
 
60
      * The condition that causes a break.
 
61
      * If it must be ignored the next N times.
 
62
      * The breakpoint hit count.
 
63
 
 
64
 
 
65
.. class:: Bdb()
 
66
 
 
67
   The :class:`Bdb` acts as a generic Python debugger base class.
 
68
 
 
69
   This class takes care of the details of the trace facility; a derived class
 
70
   should implement user interaction.  The standard debugger class
 
71
   (:class:`pdb.Pdb`) is an example.
 
72
 
 
73
 
 
74
   The following methods of :class:`Bdb` normally don't need to be overridden.
 
75
 
 
76
   .. method:: canonic(filename)
 
77
 
 
78
      Auxiliary method for getting a filename in a canonical form, that is, as a
 
79
      case-normalized (on case-insensitive filesystems) absolute path, stripped
 
80
      of surrounding angle brackets.
 
81
 
 
82
   .. method:: reset()
 
83
 
 
84
      Set the :attr:`botframe`, :attr:`stopframe`, :attr:`returnframe` and
 
85
      :attr:`quitting` attributes with values ready to start debugging.
 
86
 
 
87
   .. method:: trace_dispatch(frame, event, arg)
 
88
 
 
89
      This function is installed as the trace function of debugged frames.  Its
 
90
      return value is the new trace function (in most cases, that is, itself).
 
91
 
 
92
      The default implementation decides how to dispatch a frame, depending on
 
93
      the type of event (passed as a string) that is about to be executed.
 
94
      *event* can be one of the following:
 
95
 
 
96
      * ``"line"``: A new line of code is going to be executed.
 
97
      * ``"call"``: A function is about to be called, or another code block
 
98
        entered.
 
99
      * ``"return"``: A function or other code block is about to return.
 
100
      * ``"exception"``: An exception has occurred.
 
101
      * ``"c_call"``: A C function is about to be called.
 
102
      * ``"c_return"``: A C function has returned.
 
103
      * ``"c_exception"``: A C function has thrown an exception.
 
104
 
 
105
      For the Python events, specialized functions (see below) are called.  For
 
106
      the C events, no action is taken.
 
107
 
 
108
      The *arg* parameter depends on the previous event.
 
109
 
 
110
      See the documentation for :func:`sys.settrace` for more information on the
 
111
      trace function.  For more information on code and frame objects, refer to
 
112
      :ref:`types`.
 
113
 
 
114
   .. method:: dispatch_line(frame)
 
115
 
 
116
      If the debugger should stop on the current line, invoke the
 
117
      :meth:`user_line` method (which should be overridden in subclasses).
 
118
      Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set
 
119
      (which can be set from :meth:`user_line`).  Return a reference to the
 
120
      :meth:`trace_dispatch` method for further tracing in that scope.
 
121
 
 
122
   .. method:: dispatch_call(frame, arg)
 
123
 
 
124
      If the debugger should stop on this function call, invoke the
 
125
      :meth:`user_call` method (which should be overridden in subclasses).
 
126
      Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set
 
127
      (which can be set from :meth:`user_call`).  Return a reference to the
 
128
      :meth:`trace_dispatch` method for further tracing in that scope.
 
129
 
 
130
   .. method:: dispatch_return(frame, arg)
 
131
 
 
132
      If the debugger should stop on this function return, invoke the
 
133
      :meth:`user_return` method (which should be overridden in subclasses).
 
134
      Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set
 
135
      (which can be set from :meth:`user_return`).  Return a reference to the
 
136
      :meth:`trace_dispatch` method for further tracing in that scope.
 
137
 
 
138
   .. method:: dispatch_exception(frame, arg)
 
139
 
 
140
      If the debugger should stop at this exception, invokes the
 
141
      :meth:`user_exception` method (which should be overridden in subclasses).
 
142
      Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set
 
143
      (which can be set from :meth:`user_exception`).  Return a reference to the
 
144
      :meth:`trace_dispatch` method for further tracing in that scope.
 
145
 
 
146
   Normally derived classes don't override the following methods, but they may
 
147
   if they want to redefine the definition of stopping and breakpoints.
 
148
 
 
149
   .. method:: stop_here(frame)
 
150
 
 
151
      This method checks if the *frame* is somewhere below :attr:`botframe` in
 
152
      the call stack.  :attr:`botframe` is the frame in which debugging started.
 
153
 
 
154
   .. method:: break_here(frame)
 
155
 
 
156
      This method checks if there is a breakpoint in the filename and line
 
157
      belonging to *frame* or, at least, in the current function.  If the
 
158
      breakpoint is a temporary one, this method deletes it.
 
159
 
 
160
   .. method:: break_anywhere(frame)
 
161
 
 
162
      This method checks if there is a breakpoint in the filename of the current
 
163
      frame.
 
164
 
 
165
   Derived classes should override these methods to gain control over debugger
 
166
   operation.
 
167
 
 
168
   .. method:: user_call(frame, argument_list)
 
169
 
 
170
      This method is called from :meth:`dispatch_call` when there is the
 
171
      possibility that a break might be necessary anywhere inside the called
 
172
      function.
 
173
 
 
174
   .. method:: user_line(frame)
 
175
 
 
176
      This method is called from :meth:`dispatch_line` when either
 
177
      :meth:`stop_here` or :meth:`break_here` yields True.
 
178
 
 
179
   .. method:: user_return(frame, return_value)
 
180
 
 
181
      This method is called from :meth:`dispatch_return` when :meth:`stop_here`
 
182
      yields True.
 
183
 
 
184
   .. method:: user_exception(frame, exc_info)
 
185
 
 
186
      This method is called from :meth:`dispatch_exception` when
 
187
      :meth:`stop_here` yields True.
 
188
 
 
189
   .. method:: do_clear(arg)
 
190
 
 
191
      Handle how a breakpoint must be removed when it is a temporary one.
 
192
 
 
193
      This method must be implemented by derived classes.
 
194
 
 
195
 
 
196
   Derived classes and clients can call the following methods to affect the
 
197
   stepping state.
 
198
 
 
199
   .. method:: set_step()
 
200
 
 
201
      Stop after one line of code.
 
202
 
 
203
   .. method:: set_next(frame)
 
204
 
 
205
      Stop on the next line in or below the given frame.
 
206
 
 
207
   .. method:: set_return(frame)
 
208
 
 
209
      Stop when returning from the given frame.
 
210
 
 
211
   .. method:: set_until(frame)
 
212
 
 
213
      Stop when the line with the line no greater than the current one is
 
214
      reached or when returning from current frame
 
215
 
 
216
   .. method:: set_trace([frame])
 
217
 
 
218
      Start debugging from *frame*.  If *frame* is not specified, debugging
 
219
      starts from caller's frame.
 
220
 
 
221
   .. method:: set_continue()
 
222
 
 
223
      Stop only at breakpoints or when finished.  If there are no breakpoints,
 
224
      set the system trace function to None.
 
225
 
 
226
   .. method:: set_quit()
 
227
 
 
228
      Set the :attr:`quitting` attribute to True.  This raises :exc:`BdbQuit` in
 
229
      the next call to one of the :meth:`dispatch_\*` methods.
 
230
 
 
231
 
 
232
   Derived classes and clients can call the following methods to manipulate
 
233
   breakpoints.  These methods return a string containing an error message if
 
234
   something went wrong, or ``None`` if all is well.
 
235
 
 
236
   .. method:: set_break(filename, lineno[, temporary=0[, cond[, funcname]]])
 
237
 
 
238
      Set a new breakpoint.  If the *lineno* line doesn't exist for the
 
239
      *filename* passed as argument, return an error message.  The *filename*
 
240
      should be in canonical form, as described in the :meth:`canonic` method.
 
241
 
 
242
   .. method:: clear_break(filename, lineno)
 
243
 
 
244
      Delete the breakpoints in *filename* and *lineno*.  If none were set, an
 
245
      error message is returned.
 
246
 
 
247
   .. method:: clear_bpbynumber(arg)
 
248
 
 
249
      Delete the breakpoint which has the index *arg* in the
 
250
      :attr:`Breakpoint.bpbynumber`.  If *arg* is not numeric or out of range,
 
251
      return an error message.
 
252
 
 
253
   .. method:: clear_all_file_breaks(filename)
 
254
 
 
255
      Delete all breakpoints in *filename*.  If none were set, an error message
 
256
      is returned.
 
257
 
 
258
   .. method:: clear_all_breaks()
 
259
 
 
260
      Delete all existing breakpoints.
 
261
 
 
262
   .. method:: get_break(filename, lineno)
 
263
 
 
264
      Check if there is a breakpoint for *lineno* of *filename*.
 
265
 
 
266
   .. method:: get_breaks(filename, lineno)
 
267
 
 
268
      Return all breakpoints for *lineno* in *filename*, or an empty list if
 
269
      none are set.
 
270
 
 
271
   .. method:: get_file_breaks(filename)
 
272
 
 
273
      Return all breakpoints in *filename*, or an empty list if none are set.
 
274
 
 
275
   .. method:: get_all_breaks()
 
276
 
 
277
      Return all breakpoints that are set.
 
278
 
 
279
 
 
280
   Derived classes and clients can call the following methods to get a data
 
281
   structure representing a stack trace.
 
282
 
 
283
   .. method:: get_stack(f, t)
 
284
 
 
285
      Get a list of records for a frame and all higher (calling) and lower
 
286
      frames, and the size of the higher part.
 
287
 
 
288
   .. method:: format_stack_entry(frame_lineno, [lprefix=': '])
 
289
 
 
290
      Return a string with information about a stack entry, identified by a
 
291
      ``(frame, lineno)`` tuple:
 
292
 
 
293
      * The canonical form of the filename which contains the frame.
 
294
      * The function name, or ``"<lambda>"``.
 
295
      * The input arguments.
 
296
      * The return value.
 
297
      * The line of code (if it exists).
 
298
 
 
299
 
 
300
   The following two methods can be called by clients to use a debugger to debug
 
301
   a :term:`statement`, given as a string.
 
302
 
 
303
   .. method:: run(cmd, [globals, [locals]])
 
304
 
 
305
      Debug a statement executed via the :func:`exec` function.  *globals*
 
306
      defaults to :attr:`__main__.__dict__`, *locals* defaults to *globals*.
 
307
 
 
308
   .. method:: runeval(expr, [globals, [locals]])
 
309
 
 
310
      Debug an expression executed via the :func:`eval` function.  *globals* and
 
311
      *locals* have the same meaning as in :meth:`run`.
 
312
 
 
313
   .. method:: runctx(cmd, globals, locals)
 
314
 
 
315
      For backwards compatibility.  Calls the :meth:`run` method.
 
316
 
 
317
   .. method:: runcall(func, *args, **kwds)
 
318
 
 
319
      Debug a single function call, and return its result.
 
320
 
 
321
 
 
322
Finally, the module defines the following functions:
 
323
 
 
324
.. function:: checkfuncname(b, frame)
 
325
 
 
326
   Check whether we should break here, depending on the way the breakpoint *b*
 
327
   was set.
 
328
 
 
329
   If it was set via line number, it checks if ``b.line`` is the same as the one
 
330
   in the frame also passed as argument.  If the breakpoint was set via function
 
331
   name, we have to check we are in the right frame (the right function) and if
 
332
   we are in its first executable line.
 
333
 
 
334
.. function:: effective(file, line, frame)
 
335
 
 
336
   Determine if there is an effective (active) breakpoint at this line of code.
 
337
   Return breakpoint number or 0 if none.
 
338
 
 
339
   Called only if we know there is a breakpoint at this location.  Returns the
 
340
   breakpoint that was triggered and a flag that indicates if it is ok to delete
 
341
   a temporary breakpoint.
 
342
 
 
343
.. function:: set_trace()
 
344
 
 
345
   Starts debugging with a :class:`Bdb` instance from caller's frame.