~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-3.5.2-docs-html/_sources/library/bdb.txt

  • Committer: Dave Kuhlman
  • Date: 2017-04-15 16:24:56 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20170415162456-iav9vozzg4iwqwv3
Updated docs

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