blob: 93521011671be6616d0bf3a2def20d4dbe6ea2bd [file] [log] [blame]
Christian Heimesd8654cf2007-12-02 15:22:16 +00001:mod:`bdb` --- Debugger framework
2=================================
3
4.. module:: bdb
5 :synopsis: Debugger framework.
6
7The :mod:`bdb` module handles basic debugger functions, like setting breakpoints
8or managing execution via the debugger.
9
10The following exception is defined:
11
12.. exception:: BdbQuit
13
14 Exception raised by the :class:`Bdb` class for quitting the debugger.
15
16
17The :mod:`bdb` module also defines two classes:
18
Georg Brandlb868a662009-04-02 02:56:10 +000019.. class:: Breakpoint(self, file, line, temporary=0, cond=None, funcname=None)
Christian Heimesd8654cf2007-12-02 15:22:16 +000020
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
Benjamin Petersone41251e2008-04-25 01:59:09 +000034 :class:`Breakpoint` instances have the following methods:
Christian Heimesd8654cf2007-12-02 15:22:16 +000035
Benjamin Petersone41251e2008-04-25 01:59:09 +000036 .. method:: deleteMe()
Christian Heimesd8654cf2007-12-02 15:22:16 +000037
Benjamin Petersone41251e2008-04-25 01:59:09 +000038 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.
Christian Heimesd8654cf2007-12-02 15:22:16 +000041
Christian Heimesd8654cf2007-12-02 15:22:16 +000042
Benjamin Petersone41251e2008-04-25 01:59:09 +000043 .. method:: enable()
Christian Heimesd8654cf2007-12-02 15:22:16 +000044
Benjamin Petersone41251e2008-04-25 01:59:09 +000045 Mark the breakpoint as enabled.
Christian Heimesd8654cf2007-12-02 15:22:16 +000046
Christian Heimesd8654cf2007-12-02 15:22:16 +000047
Benjamin Petersone41251e2008-04-25 01:59:09 +000048 .. method:: disable()
Christian Heimesd8654cf2007-12-02 15:22:16 +000049
Benjamin Petersone41251e2008-04-25 01:59:09 +000050 Mark the breakpoint as disabled.
Christian Heimesd8654cf2007-12-02 15:22:16 +000051
Benjamin Petersone41251e2008-04-25 01:59:09 +000052
Georg Brandld2fd4ca2010-07-30 15:01:23 +000053 .. method:: bpformat()
Benjamin Petersone41251e2008-04-25 01:59:09 +000054
Georg Brandld2fd4ca2010-07-30 15:01:23 +000055 Return a string with all the information about the breakpoint, nicely
56 formatted:
Benjamin Petersone41251e2008-04-25 01:59:09 +000057
58 * The breakpoint number.
59 * If it is temporary or not.
60 * Its file,line position.
61 * The condition that causes a break.
62 * If it must be ignored the next N times.
63 * The breakpoint hit count.
Christian Heimesd8654cf2007-12-02 15:22:16 +000064
Georg Brandld2fd4ca2010-07-30 15:01:23 +000065 .. versionadded:: 3.2
66
67 .. method:: bpprint(out=None)
68
69 Print the output of :meth:`bpformat` to the file *out*, or if it is
70 ``None``, to standard output.
71
Christian Heimesd8654cf2007-12-02 15:22:16 +000072
Benjamin Petersona0dfa822009-11-13 02:25:08 +000073.. class:: Bdb(skip=None)
Christian Heimesd8654cf2007-12-02 15:22:16 +000074
Benjamin Petersona0dfa822009-11-13 02:25:08 +000075 The :class:`Bdb` class acts as a generic Python debugger base class.
Christian Heimesd8654cf2007-12-02 15:22:16 +000076
77 This class takes care of the details of the trace facility; a derived class
78 should implement user interaction. The standard debugger class
79 (:class:`pdb.Pdb`) is an example.
80
Benjamin Petersona0dfa822009-11-13 02:25:08 +000081 The *skip* argument, if given, must be an iterable of glob-style
82 module name patterns. The debugger will not step into frames that
83 originate in a module that matches one of these patterns. Whether a
84 frame is considered to originate in a certain module is determined
85 by the ``__name__`` in the frame globals.
86
Ezio Melotti83fc6dd2010-01-27 22:44:03 +000087 .. versionadded:: 3.1
Benjamin Petersona0dfa822009-11-13 02:25:08 +000088 The *skip* argument.
Christian Heimesd8654cf2007-12-02 15:22:16 +000089
Benjamin Petersone41251e2008-04-25 01:59:09 +000090 The following methods of :class:`Bdb` normally don't need to be overridden.
Christian Heimesd8654cf2007-12-02 15:22:16 +000091
Benjamin Petersone41251e2008-04-25 01:59:09 +000092 .. method:: canonic(filename)
Christian Heimesd8654cf2007-12-02 15:22:16 +000093
Benjamin Petersone41251e2008-04-25 01:59:09 +000094 Auxiliary method for getting a filename in a canonical form, that is, as a
95 case-normalized (on case-insensitive filesystems) absolute path, stripped
96 of surrounding angle brackets.
Christian Heimesd8654cf2007-12-02 15:22:16 +000097
Benjamin Petersone41251e2008-04-25 01:59:09 +000098 .. method:: reset()
Christian Heimesd8654cf2007-12-02 15:22:16 +000099
Benjamin Petersone41251e2008-04-25 01:59:09 +0000100 Set the :attr:`botframe`, :attr:`stopframe`, :attr:`returnframe` and
101 :attr:`quitting` attributes with values ready to start debugging.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000102
Benjamin Petersone41251e2008-04-25 01:59:09 +0000103 .. method:: trace_dispatch(frame, event, arg)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000104
Benjamin Petersone41251e2008-04-25 01:59:09 +0000105 This function is installed as the trace function of debugged frames. Its
106 return value is the new trace function (in most cases, that is, itself).
Christian Heimesd8654cf2007-12-02 15:22:16 +0000107
Benjamin Petersone41251e2008-04-25 01:59:09 +0000108 The default implementation decides how to dispatch a frame, depending on
109 the type of event (passed as a string) that is about to be executed.
110 *event* can be one of the following:
Christian Heimesd8654cf2007-12-02 15:22:16 +0000111
Benjamin Petersone41251e2008-04-25 01:59:09 +0000112 * ``"line"``: A new line of code is going to be executed.
113 * ``"call"``: A function is about to be called, or another code block
114 entered.
115 * ``"return"``: A function or other code block is about to return.
116 * ``"exception"``: An exception has occurred.
117 * ``"c_call"``: A C function is about to be called.
118 * ``"c_return"``: A C function has returned.
119 * ``"c_exception"``: A C function has thrown an exception.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000120
Benjamin Petersone41251e2008-04-25 01:59:09 +0000121 For the Python events, specialized functions (see below) are called. For
122 the C events, no action is taken.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000123
Benjamin Petersone41251e2008-04-25 01:59:09 +0000124 The *arg* parameter depends on the previous event.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000125
Benjamin Peterson4469d0c2008-11-30 22:46:23 +0000126 See the documentation for :func:`sys.settrace` for more information on the
127 trace function. For more information on code and frame objects, refer to
128 :ref:`types`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000129
Benjamin Petersone41251e2008-04-25 01:59:09 +0000130 .. method:: dispatch_line(frame)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000131
Benjamin Petersone41251e2008-04-25 01:59:09 +0000132 If the debugger should stop on the current line, invoke the
133 :meth:`user_line` 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_line`). Return a reference to the
136 :meth:`trace_dispatch` method for further tracing in that scope.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000137
Benjamin Petersone41251e2008-04-25 01:59:09 +0000138 .. method:: dispatch_call(frame, arg)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000139
Benjamin Petersone41251e2008-04-25 01:59:09 +0000140 If the debugger should stop on this function call, invoke the
141 :meth:`user_call` 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_call`). Return a reference to the
144 :meth:`trace_dispatch` method for further tracing in that scope.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000145
Benjamin Petersone41251e2008-04-25 01:59:09 +0000146 .. method:: dispatch_return(frame, arg)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000147
Benjamin Petersone41251e2008-04-25 01:59:09 +0000148 If the debugger should stop on this function return, invoke the
149 :meth:`user_return` method (which should be overridden in subclasses).
150 Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set
151 (which can be set from :meth:`user_return`). Return a reference to the
152 :meth:`trace_dispatch` method for further tracing in that scope.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000153
Benjamin Petersone41251e2008-04-25 01:59:09 +0000154 .. method:: dispatch_exception(frame, arg)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000155
Benjamin Petersone41251e2008-04-25 01:59:09 +0000156 If the debugger should stop at this exception, invokes the
157 :meth:`user_exception` method (which should be overridden in subclasses).
158 Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set
159 (which can be set from :meth:`user_exception`). Return a reference to the
160 :meth:`trace_dispatch` method for further tracing in that scope.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000161
Benjamin Petersone41251e2008-04-25 01:59:09 +0000162 Normally derived classes don't override the following methods, but they may
163 if they want to redefine the definition of stopping and breakpoints.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000164
Benjamin Petersone41251e2008-04-25 01:59:09 +0000165 .. method:: stop_here(frame)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000166
Benjamin Petersone41251e2008-04-25 01:59:09 +0000167 This method checks if the *frame* is somewhere below :attr:`botframe` in
168 the call stack. :attr:`botframe` is the frame in which debugging started.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000169
Benjamin Petersone41251e2008-04-25 01:59:09 +0000170 .. method:: break_here(frame)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000171
Benjamin Petersone41251e2008-04-25 01:59:09 +0000172 This method checks if there is a breakpoint in the filename and line
173 belonging to *frame* or, at least, in the current function. If the
174 breakpoint is a temporary one, this method deletes it.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000175
Benjamin Petersone41251e2008-04-25 01:59:09 +0000176 .. method:: break_anywhere(frame)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000177
Benjamin Petersone41251e2008-04-25 01:59:09 +0000178 This method checks if there is a breakpoint in the filename of the current
179 frame.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000180
Benjamin Petersone41251e2008-04-25 01:59:09 +0000181 Derived classes should override these methods to gain control over debugger
182 operation.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000183
Benjamin Petersone41251e2008-04-25 01:59:09 +0000184 .. method:: user_call(frame, argument_list)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000185
Benjamin Petersone41251e2008-04-25 01:59:09 +0000186 This method is called from :meth:`dispatch_call` when there is the
187 possibility that a break might be necessary anywhere inside the called
188 function.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000189
Benjamin Petersone41251e2008-04-25 01:59:09 +0000190 .. method:: user_line(frame)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000191
Benjamin Petersone41251e2008-04-25 01:59:09 +0000192 This method is called from :meth:`dispatch_line` when either
193 :meth:`stop_here` or :meth:`break_here` yields True.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000194
Benjamin Petersone41251e2008-04-25 01:59:09 +0000195 .. method:: user_return(frame, return_value)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000196
Benjamin Petersone41251e2008-04-25 01:59:09 +0000197 This method is called from :meth:`dispatch_return` when :meth:`stop_here`
198 yields True.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000199
Benjamin Petersone41251e2008-04-25 01:59:09 +0000200 .. method:: user_exception(frame, exc_info)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000201
Benjamin Petersone41251e2008-04-25 01:59:09 +0000202 This method is called from :meth:`dispatch_exception` when
203 :meth:`stop_here` yields True.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000204
Benjamin Petersone41251e2008-04-25 01:59:09 +0000205 .. method:: do_clear(arg)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000206
Benjamin Petersone41251e2008-04-25 01:59:09 +0000207 Handle how a breakpoint must be removed when it is a temporary one.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000208
Benjamin Petersone41251e2008-04-25 01:59:09 +0000209 This method must be implemented by derived classes.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000210
211
Benjamin Petersone41251e2008-04-25 01:59:09 +0000212 Derived classes and clients can call the following methods to affect the
213 stepping state.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000214
Benjamin Petersone41251e2008-04-25 01:59:09 +0000215 .. method:: set_step()
Christian Heimesd8654cf2007-12-02 15:22:16 +0000216
Benjamin Petersone41251e2008-04-25 01:59:09 +0000217 Stop after one line of code.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000218
Benjamin Petersone41251e2008-04-25 01:59:09 +0000219 .. method:: set_next(frame)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000220
Benjamin Petersone41251e2008-04-25 01:59:09 +0000221 Stop on the next line in or below the given frame.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000222
Benjamin Petersone41251e2008-04-25 01:59:09 +0000223 .. method:: set_return(frame)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000224
Benjamin Petersone41251e2008-04-25 01:59:09 +0000225 Stop when returning from the given frame.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000226
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +0000227 .. method:: set_until(frame)
228
229 Stop when the line with the line no greater than the current one is
230 reached or when returning from current frame
231
Benjamin Petersone41251e2008-04-25 01:59:09 +0000232 .. method:: set_trace([frame])
Christian Heimesd8654cf2007-12-02 15:22:16 +0000233
Benjamin Petersone41251e2008-04-25 01:59:09 +0000234 Start debugging from *frame*. If *frame* is not specified, debugging
235 starts from caller's frame.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000236
Benjamin Petersone41251e2008-04-25 01:59:09 +0000237 .. method:: set_continue()
Christian Heimesd8654cf2007-12-02 15:22:16 +0000238
Benjamin Petersone41251e2008-04-25 01:59:09 +0000239 Stop only at breakpoints or when finished. If there are no breakpoints,
240 set the system trace function to None.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000241
Benjamin Petersone41251e2008-04-25 01:59:09 +0000242 .. method:: set_quit()
Christian Heimesd8654cf2007-12-02 15:22:16 +0000243
Benjamin Petersone41251e2008-04-25 01:59:09 +0000244 Set the :attr:`quitting` attribute to True. This raises :exc:`BdbQuit` in
245 the next call to one of the :meth:`dispatch_\*` methods.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000246
247
Benjamin Petersone41251e2008-04-25 01:59:09 +0000248 Derived classes and clients can call the following methods to manipulate
249 breakpoints. These methods return a string containing an error message if
250 something went wrong, or ``None`` if all is well.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000251
Georg Brandlb868a662009-04-02 02:56:10 +0000252 .. method:: set_break(filename, lineno, temporary=0, cond, funcname)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000253
Benjamin Petersone41251e2008-04-25 01:59:09 +0000254 Set a new breakpoint. If the *lineno* line doesn't exist for the
255 *filename* passed as argument, return an error message. The *filename*
256 should be in canonical form, as described in the :meth:`canonic` method.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000257
Benjamin Petersone41251e2008-04-25 01:59:09 +0000258 .. method:: clear_break(filename, lineno)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000259
Benjamin Petersone41251e2008-04-25 01:59:09 +0000260 Delete the breakpoints in *filename* and *lineno*. If none were set, an
261 error message is returned.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000262
Benjamin Petersone41251e2008-04-25 01:59:09 +0000263 .. method:: clear_bpbynumber(arg)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000264
Benjamin Petersone41251e2008-04-25 01:59:09 +0000265 Delete the breakpoint which has the index *arg* in the
266 :attr:`Breakpoint.bpbynumber`. If *arg* is not numeric or out of range,
267 return an error message.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000268
Benjamin Petersone41251e2008-04-25 01:59:09 +0000269 .. method:: clear_all_file_breaks(filename)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000270
Benjamin Petersone41251e2008-04-25 01:59:09 +0000271 Delete all breakpoints in *filename*. If none were set, an error message
272 is returned.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000273
Benjamin Petersone41251e2008-04-25 01:59:09 +0000274 .. method:: clear_all_breaks()
Christian Heimesd8654cf2007-12-02 15:22:16 +0000275
Benjamin Petersone41251e2008-04-25 01:59:09 +0000276 Delete all existing breakpoints.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000277
Georg Brandl7410dd12010-07-30 12:01:20 +0000278 .. method:: get_bpbynumber(arg)
279
280 Return a breakpoint specified by the given number. If *arg* is a string,
281 it will be converted to a number. If *arg* is a non-numeric string, if
282 the given breakpoint never existed or has been deleted, a
283 :exc:`ValueError` is raised.
284
285 .. versionadded:: 3.2
286
Benjamin Petersone41251e2008-04-25 01:59:09 +0000287 .. method:: get_break(filename, lineno)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000288
Benjamin Petersone41251e2008-04-25 01:59:09 +0000289 Check if there is a breakpoint for *lineno* of *filename*.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000290
Benjamin Petersone41251e2008-04-25 01:59:09 +0000291 .. method:: get_breaks(filename, lineno)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000292
Benjamin Petersone41251e2008-04-25 01:59:09 +0000293 Return all breakpoints for *lineno* in *filename*, or an empty list if
294 none are set.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000295
Benjamin Petersone41251e2008-04-25 01:59:09 +0000296 .. method:: get_file_breaks(filename)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000297
Benjamin Petersone41251e2008-04-25 01:59:09 +0000298 Return all breakpoints in *filename*, or an empty list if none are set.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000299
Benjamin Petersone41251e2008-04-25 01:59:09 +0000300 .. method:: get_all_breaks()
Christian Heimesd8654cf2007-12-02 15:22:16 +0000301
Benjamin Petersone41251e2008-04-25 01:59:09 +0000302 Return all breakpoints that are set.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000303
304
Benjamin Petersone41251e2008-04-25 01:59:09 +0000305 Derived classes and clients can call the following methods to get a data
306 structure representing a stack trace.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000307
Benjamin Petersone41251e2008-04-25 01:59:09 +0000308 .. method:: get_stack(f, t)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000309
Benjamin Petersone41251e2008-04-25 01:59:09 +0000310 Get a list of records for a frame and all higher (calling) and lower
311 frames, and the size of the higher part.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000312
Georg Brandlb868a662009-04-02 02:56:10 +0000313 .. method:: format_stack_entry(frame_lineno, lprefix=': ')
Christian Heimesd8654cf2007-12-02 15:22:16 +0000314
Benjamin Petersone41251e2008-04-25 01:59:09 +0000315 Return a string with information about a stack entry, identified by a
316 ``(frame, lineno)`` tuple:
Christian Heimesd8654cf2007-12-02 15:22:16 +0000317
Benjamin Petersone41251e2008-04-25 01:59:09 +0000318 * The canonical form of the filename which contains the frame.
319 * The function name, or ``"<lambda>"``.
320 * The input arguments.
321 * The return value.
322 * The line of code (if it exists).
Christian Heimesd8654cf2007-12-02 15:22:16 +0000323
324
Benjamin Petersone41251e2008-04-25 01:59:09 +0000325 The following two methods can be called by clients to use a debugger to debug
326 a :term:`statement`, given as a string.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000327
Georg Brandlb868a662009-04-02 02:56:10 +0000328 .. method:: run(cmd, globals=None, locals=None)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000329
Benjamin Petersone41251e2008-04-25 01:59:09 +0000330 Debug a statement executed via the :func:`exec` function. *globals*
331 defaults to :attr:`__main__.__dict__`, *locals* defaults to *globals*.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000332
Georg Brandlb868a662009-04-02 02:56:10 +0000333 .. method:: runeval(expr, globals=None, locals=None)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000334
Benjamin Petersone41251e2008-04-25 01:59:09 +0000335 Debug an expression executed via the :func:`eval` function. *globals* and
336 *locals* have the same meaning as in :meth:`run`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000337
Benjamin Petersone41251e2008-04-25 01:59:09 +0000338 .. method:: runctx(cmd, globals, locals)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000339
Benjamin Petersone41251e2008-04-25 01:59:09 +0000340 For backwards compatibility. Calls the :meth:`run` method.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000341
Benjamin Petersone41251e2008-04-25 01:59:09 +0000342 .. method:: runcall(func, *args, **kwds)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000343
Benjamin Petersone41251e2008-04-25 01:59:09 +0000344 Debug a single function call, and return its result.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000345
346
347Finally, the module defines the following functions:
348
349.. function:: checkfuncname(b, frame)
350
351 Check whether we should break here, depending on the way the breakpoint *b*
352 was set.
Georg Brandl48310cd2009-01-03 21:18:54 +0000353
Christian Heimesd8654cf2007-12-02 15:22:16 +0000354 If it was set via line number, it checks if ``b.line`` is the same as the one
355 in the frame also passed as argument. If the breakpoint was set via function
356 name, we have to check we are in the right frame (the right function) and if
357 we are in its first executable line.
358
359.. function:: effective(file, line, frame)
360
361 Determine if there is an effective (active) breakpoint at this line of code.
362 Return breakpoint number or 0 if none.
Georg Brandl06788c92009-01-03 21:31:47 +0000363
Christian Heimesd8654cf2007-12-02 15:22:16 +0000364 Called only if we know there is a breakpoint at this location. Returns the
365 breakpoint that was triggered and a flag that indicates if it is ok to delete
366 a temporary breakpoint.
367
368.. function:: set_trace()
369
370 Starts debugging with a :class:`Bdb` instance from caller's frame.