17db96d56Sopenharmony_ci:mod:`bdb` --- Debugger framework 27db96d56Sopenharmony_ci================================= 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: bdb 57db96d56Sopenharmony_ci :synopsis: Debugger framework. 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci**Source code:** :source:`Lib/bdb.py` 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci-------------- 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ciThe :mod:`bdb` module handles basic debugger functions, like setting breakpoints 127db96d56Sopenharmony_cior managing execution via the debugger. 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ciThe following exception is defined: 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci.. exception:: BdbQuit 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ci Exception raised by the :class:`Bdb` class for quitting the debugger. 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ciThe :mod:`bdb` module also defines two classes: 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci.. class:: Breakpoint(self, file, line, temporary=False, cond=None, funcname=None) 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci This class implements temporary breakpoints, ignore counts, disabling and 267db96d56Sopenharmony_ci (re-)enabling, and conditionals. 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ci Breakpoints are indexed by number through a list called :attr:`bpbynumber` 297db96d56Sopenharmony_ci and by ``(file, line)`` pairs through :attr:`bplist`. The former points to 307db96d56Sopenharmony_ci a single instance of class :class:`Breakpoint`. The latter points to a list 317db96d56Sopenharmony_ci of such instances since there may be more than one breakpoint per line. 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_ci When creating a breakpoint, its associated :attr:`file name <file>` should 347db96d56Sopenharmony_ci be in canonical form. If a :attr:`funcname` is defined, a breakpoint 357db96d56Sopenharmony_ci :attr:`hit <hits>` will be counted when the first line of that function is 367db96d56Sopenharmony_ci executed. A :attr:`conditional <cond>` breakpoint always counts a 377db96d56Sopenharmony_ci :attr:`hit <hits>`. 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci :class:`Breakpoint` instances have the following methods: 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci .. method:: deleteMe() 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci Delete the breakpoint from the list associated to a file/line. If it is 447db96d56Sopenharmony_ci the last breakpoint in that position, it also deletes the entry for the 457db96d56Sopenharmony_ci file/line. 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci .. method:: enable() 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci Mark the breakpoint as enabled. 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci .. method:: disable() 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci Mark the breakpoint as disabled. 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci .. method:: bpformat() 597db96d56Sopenharmony_ci 607db96d56Sopenharmony_ci Return a string with all the information about the breakpoint, nicely 617db96d56Sopenharmony_ci formatted: 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci * Breakpoint number. 647db96d56Sopenharmony_ci * Temporary status (del or keep). 657db96d56Sopenharmony_ci * File/line position. 667db96d56Sopenharmony_ci * Break condition. 677db96d56Sopenharmony_ci * Number of times to ignore. 687db96d56Sopenharmony_ci * Number of times hit. 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ci .. versionadded:: 3.2 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci .. method:: bpprint(out=None) 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci Print the output of :meth:`bpformat` to the file *out*, or if it is 757db96d56Sopenharmony_ci ``None``, to standard output. 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci :class:`Breakpoint` instances have the following attributes: 787db96d56Sopenharmony_ci 797db96d56Sopenharmony_ci .. attribute:: file 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci File name of the :class:`Breakpoint`. 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci .. attribute:: line 847db96d56Sopenharmony_ci 857db96d56Sopenharmony_ci Line number of the :class:`Breakpoint` within :attr:`file`. 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ci .. attribute:: temporary 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ci True if a :class:`Breakpoint` at (file, line) is temporary. 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ci .. attribute:: cond 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci Condition for evaluating a :class:`Breakpoint` at (file, line). 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ci .. attribute:: funcname 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci Function name that defines whether a :class:`Breakpoint` is hit upon 987db96d56Sopenharmony_ci entering the function. 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_ci .. attribute:: enabled 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ci True if :class:`Breakpoint` is enabled. 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci .. attribute:: bpbynumber 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ci Numeric index for a single instance of a :class:`Breakpoint`. 1077db96d56Sopenharmony_ci 1087db96d56Sopenharmony_ci .. attribute:: bplist 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ci Dictionary of :class:`Breakpoint` instances indexed by 1117db96d56Sopenharmony_ci (:attr:`file`, :attr:`line`) tuples. 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ci .. attribute:: ignore 1147db96d56Sopenharmony_ci 1157db96d56Sopenharmony_ci Number of times to ignore a :class:`Breakpoint`. 1167db96d56Sopenharmony_ci 1177db96d56Sopenharmony_ci .. attribute:: hits 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_ci Count of the number of times a :class:`Breakpoint` has been hit. 1207db96d56Sopenharmony_ci 1217db96d56Sopenharmony_ci.. class:: Bdb(skip=None) 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_ci The :class:`Bdb` class acts as a generic Python debugger base class. 1247db96d56Sopenharmony_ci 1257db96d56Sopenharmony_ci This class takes care of the details of the trace facility; a derived class 1267db96d56Sopenharmony_ci should implement user interaction. The standard debugger class 1277db96d56Sopenharmony_ci (:class:`pdb.Pdb`) is an example. 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci The *skip* argument, if given, must be an iterable of glob-style 1307db96d56Sopenharmony_ci module name patterns. The debugger will not step into frames that 1317db96d56Sopenharmony_ci originate in a module that matches one of these patterns. Whether a 1327db96d56Sopenharmony_ci frame is considered to originate in a certain module is determined 1337db96d56Sopenharmony_ci by the ``__name__`` in the frame globals. 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci .. versionadded:: 3.1 1367db96d56Sopenharmony_ci The *skip* argument. 1377db96d56Sopenharmony_ci 1387db96d56Sopenharmony_ci The following methods of :class:`Bdb` normally don't need to be overridden. 1397db96d56Sopenharmony_ci 1407db96d56Sopenharmony_ci .. method:: canonic(filename) 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci Return canonical form of *filename*. 1437db96d56Sopenharmony_ci 1447db96d56Sopenharmony_ci For real file names, the canonical form is an operating-system-dependent, 1457db96d56Sopenharmony_ci :func:`case-normalized <os.path.normcase>` :func:`absolute path 1467db96d56Sopenharmony_ci <os.path.abspath>`. A *filename* with angle brackets, such as ``"<stdin>"`` 1477db96d56Sopenharmony_ci generated in interactive mode, is returned unchanged. 1487db96d56Sopenharmony_ci 1497db96d56Sopenharmony_ci .. method:: reset() 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_ci Set the :attr:`botframe`, :attr:`stopframe`, :attr:`returnframe` and 1527db96d56Sopenharmony_ci :attr:`quitting` attributes with values ready to start debugging. 1537db96d56Sopenharmony_ci 1547db96d56Sopenharmony_ci .. method:: trace_dispatch(frame, event, arg) 1557db96d56Sopenharmony_ci 1567db96d56Sopenharmony_ci This function is installed as the trace function of debugged frames. Its 1577db96d56Sopenharmony_ci return value is the new trace function (in most cases, that is, itself). 1587db96d56Sopenharmony_ci 1597db96d56Sopenharmony_ci The default implementation decides how to dispatch a frame, depending on 1607db96d56Sopenharmony_ci the type of event (passed as a string) that is about to be executed. 1617db96d56Sopenharmony_ci *event* can be one of the following: 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_ci * ``"line"``: A new line of code is going to be executed. 1647db96d56Sopenharmony_ci * ``"call"``: A function is about to be called, or another code block 1657db96d56Sopenharmony_ci entered. 1667db96d56Sopenharmony_ci * ``"return"``: A function or other code block is about to return. 1677db96d56Sopenharmony_ci * ``"exception"``: An exception has occurred. 1687db96d56Sopenharmony_ci * ``"c_call"``: A C function is about to be called. 1697db96d56Sopenharmony_ci * ``"c_return"``: A C function has returned. 1707db96d56Sopenharmony_ci * ``"c_exception"``: A C function has raised an exception. 1717db96d56Sopenharmony_ci 1727db96d56Sopenharmony_ci For the Python events, specialized functions (see below) are called. For 1737db96d56Sopenharmony_ci the C events, no action is taken. 1747db96d56Sopenharmony_ci 1757db96d56Sopenharmony_ci The *arg* parameter depends on the previous event. 1767db96d56Sopenharmony_ci 1777db96d56Sopenharmony_ci See the documentation for :func:`sys.settrace` for more information on the 1787db96d56Sopenharmony_ci trace function. For more information on code and frame objects, refer to 1797db96d56Sopenharmony_ci :ref:`types`. 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_ci .. method:: dispatch_line(frame) 1827db96d56Sopenharmony_ci 1837db96d56Sopenharmony_ci If the debugger should stop on the current line, invoke the 1847db96d56Sopenharmony_ci :meth:`user_line` method (which should be overridden in subclasses). 1857db96d56Sopenharmony_ci Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set 1867db96d56Sopenharmony_ci (which can be set from :meth:`user_line`). Return a reference to the 1877db96d56Sopenharmony_ci :meth:`trace_dispatch` method for further tracing in that scope. 1887db96d56Sopenharmony_ci 1897db96d56Sopenharmony_ci .. method:: dispatch_call(frame, arg) 1907db96d56Sopenharmony_ci 1917db96d56Sopenharmony_ci If the debugger should stop on this function call, invoke the 1927db96d56Sopenharmony_ci :meth:`user_call` method (which should be overridden in subclasses). 1937db96d56Sopenharmony_ci Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set 1947db96d56Sopenharmony_ci (which can be set from :meth:`user_call`). Return a reference to the 1957db96d56Sopenharmony_ci :meth:`trace_dispatch` method for further tracing in that scope. 1967db96d56Sopenharmony_ci 1977db96d56Sopenharmony_ci .. method:: dispatch_return(frame, arg) 1987db96d56Sopenharmony_ci 1997db96d56Sopenharmony_ci If the debugger should stop on this function return, invoke the 2007db96d56Sopenharmony_ci :meth:`user_return` method (which should be overridden in subclasses). 2017db96d56Sopenharmony_ci Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set 2027db96d56Sopenharmony_ci (which can be set from :meth:`user_return`). Return a reference to the 2037db96d56Sopenharmony_ci :meth:`trace_dispatch` method for further tracing in that scope. 2047db96d56Sopenharmony_ci 2057db96d56Sopenharmony_ci .. method:: dispatch_exception(frame, arg) 2067db96d56Sopenharmony_ci 2077db96d56Sopenharmony_ci If the debugger should stop at this exception, invokes the 2087db96d56Sopenharmony_ci :meth:`user_exception` method (which should be overridden in subclasses). 2097db96d56Sopenharmony_ci Raise a :exc:`BdbQuit` exception if the :attr:`Bdb.quitting` flag is set 2107db96d56Sopenharmony_ci (which can be set from :meth:`user_exception`). Return a reference to the 2117db96d56Sopenharmony_ci :meth:`trace_dispatch` method for further tracing in that scope. 2127db96d56Sopenharmony_ci 2137db96d56Sopenharmony_ci Normally derived classes don't override the following methods, but they may 2147db96d56Sopenharmony_ci if they want to redefine the definition of stopping and breakpoints. 2157db96d56Sopenharmony_ci 2167db96d56Sopenharmony_ci .. method:: is_skipped_line(module_name) 2177db96d56Sopenharmony_ci 2187db96d56Sopenharmony_ci Return True if *module_name* matches any skip pattern. 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_ci .. method:: stop_here(frame) 2217db96d56Sopenharmony_ci 2227db96d56Sopenharmony_ci Return True if *frame* is below the starting frame in the stack. 2237db96d56Sopenharmony_ci 2247db96d56Sopenharmony_ci .. method:: break_here(frame) 2257db96d56Sopenharmony_ci 2267db96d56Sopenharmony_ci Return True if there is an effective breakpoint for this line. 2277db96d56Sopenharmony_ci 2287db96d56Sopenharmony_ci Check whether a line or function breakpoint exists and is in effect. Delete temporary 2297db96d56Sopenharmony_ci breakpoints based on information from :func:`effective`. 2307db96d56Sopenharmony_ci 2317db96d56Sopenharmony_ci .. method:: break_anywhere(frame) 2327db96d56Sopenharmony_ci 2337db96d56Sopenharmony_ci Return True if any breakpoint exists for *frame*'s filename. 2347db96d56Sopenharmony_ci 2357db96d56Sopenharmony_ci Derived classes should override these methods to gain control over debugger 2367db96d56Sopenharmony_ci operation. 2377db96d56Sopenharmony_ci 2387db96d56Sopenharmony_ci .. method:: user_call(frame, argument_list) 2397db96d56Sopenharmony_ci 2407db96d56Sopenharmony_ci Called from :meth:`dispatch_call` if a break might stop inside the 2417db96d56Sopenharmony_ci called function. 2427db96d56Sopenharmony_ci 2437db96d56Sopenharmony_ci .. method:: user_line(frame) 2447db96d56Sopenharmony_ci 2457db96d56Sopenharmony_ci Called from :meth:`dispatch_line` when either :meth:`stop_here` or 2467db96d56Sopenharmony_ci :meth:`break_here` returns ``True``. 2477db96d56Sopenharmony_ci 2487db96d56Sopenharmony_ci .. method:: user_return(frame, return_value) 2497db96d56Sopenharmony_ci 2507db96d56Sopenharmony_ci Called from :meth:`dispatch_return` when :meth:`stop_here` returns ``True``. 2517db96d56Sopenharmony_ci 2527db96d56Sopenharmony_ci .. method:: user_exception(frame, exc_info) 2537db96d56Sopenharmony_ci 2547db96d56Sopenharmony_ci Called from :meth:`dispatch_exception` when :meth:`stop_here` 2557db96d56Sopenharmony_ci returns ``True``. 2567db96d56Sopenharmony_ci 2577db96d56Sopenharmony_ci .. method:: do_clear(arg) 2587db96d56Sopenharmony_ci 2597db96d56Sopenharmony_ci Handle how a breakpoint must be removed when it is a temporary one. 2607db96d56Sopenharmony_ci 2617db96d56Sopenharmony_ci This method must be implemented by derived classes. 2627db96d56Sopenharmony_ci 2637db96d56Sopenharmony_ci 2647db96d56Sopenharmony_ci Derived classes and clients can call the following methods to affect the 2657db96d56Sopenharmony_ci stepping state. 2667db96d56Sopenharmony_ci 2677db96d56Sopenharmony_ci .. method:: set_step() 2687db96d56Sopenharmony_ci 2697db96d56Sopenharmony_ci Stop after one line of code. 2707db96d56Sopenharmony_ci 2717db96d56Sopenharmony_ci .. method:: set_next(frame) 2727db96d56Sopenharmony_ci 2737db96d56Sopenharmony_ci Stop on the next line in or below the given frame. 2747db96d56Sopenharmony_ci 2757db96d56Sopenharmony_ci .. method:: set_return(frame) 2767db96d56Sopenharmony_ci 2777db96d56Sopenharmony_ci Stop when returning from the given frame. 2787db96d56Sopenharmony_ci 2797db96d56Sopenharmony_ci .. method:: set_until(frame, lineno=None) 2807db96d56Sopenharmony_ci 2817db96d56Sopenharmony_ci Stop when the line with the *lineno* greater than the current one is 2827db96d56Sopenharmony_ci reached or when returning from current frame. 2837db96d56Sopenharmony_ci 2847db96d56Sopenharmony_ci .. method:: set_trace([frame]) 2857db96d56Sopenharmony_ci 2867db96d56Sopenharmony_ci Start debugging from *frame*. If *frame* is not specified, debugging 2877db96d56Sopenharmony_ci starts from caller's frame. 2887db96d56Sopenharmony_ci 2897db96d56Sopenharmony_ci .. method:: set_continue() 2907db96d56Sopenharmony_ci 2917db96d56Sopenharmony_ci Stop only at breakpoints or when finished. If there are no breakpoints, 2927db96d56Sopenharmony_ci set the system trace function to ``None``. 2937db96d56Sopenharmony_ci 2947db96d56Sopenharmony_ci .. method:: set_quit() 2957db96d56Sopenharmony_ci 2967db96d56Sopenharmony_ci Set the :attr:`quitting` attribute to ``True``. This raises :exc:`BdbQuit` in 2977db96d56Sopenharmony_ci the next call to one of the :meth:`dispatch_\*` methods. 2987db96d56Sopenharmony_ci 2997db96d56Sopenharmony_ci 3007db96d56Sopenharmony_ci Derived classes and clients can call the following methods to manipulate 3017db96d56Sopenharmony_ci breakpoints. These methods return a string containing an error message if 3027db96d56Sopenharmony_ci something went wrong, or ``None`` if all is well. 3037db96d56Sopenharmony_ci 3047db96d56Sopenharmony_ci .. method:: set_break(filename, lineno, temporary=False, cond=None, funcname=None) 3057db96d56Sopenharmony_ci 3067db96d56Sopenharmony_ci Set a new breakpoint. If the *lineno* line doesn't exist for the 3077db96d56Sopenharmony_ci *filename* passed as argument, return an error message. The *filename* 3087db96d56Sopenharmony_ci should be in canonical form, as described in the :meth:`canonic` method. 3097db96d56Sopenharmony_ci 3107db96d56Sopenharmony_ci .. method:: clear_break(filename, lineno) 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_ci Delete the breakpoints in *filename* and *lineno*. If none were set, 3137db96d56Sopenharmony_ci return an error message. 3147db96d56Sopenharmony_ci 3157db96d56Sopenharmony_ci .. method:: clear_bpbynumber(arg) 3167db96d56Sopenharmony_ci 3177db96d56Sopenharmony_ci Delete the breakpoint which has the index *arg* in the 3187db96d56Sopenharmony_ci :attr:`Breakpoint.bpbynumber`. If *arg* is not numeric or out of range, 3197db96d56Sopenharmony_ci return an error message. 3207db96d56Sopenharmony_ci 3217db96d56Sopenharmony_ci .. method:: clear_all_file_breaks(filename) 3227db96d56Sopenharmony_ci 3237db96d56Sopenharmony_ci Delete all breakpoints in *filename*. If none were set, return an error 3247db96d56Sopenharmony_ci message. 3257db96d56Sopenharmony_ci 3267db96d56Sopenharmony_ci .. method:: clear_all_breaks() 3277db96d56Sopenharmony_ci 3287db96d56Sopenharmony_ci Delete all existing breakpoints. If none were set, return an error 3297db96d56Sopenharmony_ci message. 3307db96d56Sopenharmony_ci 3317db96d56Sopenharmony_ci .. method:: get_bpbynumber(arg) 3327db96d56Sopenharmony_ci 3337db96d56Sopenharmony_ci Return a breakpoint specified by the given number. If *arg* is a string, 3347db96d56Sopenharmony_ci it will be converted to a number. If *arg* is a non-numeric string, if 3357db96d56Sopenharmony_ci the given breakpoint never existed or has been deleted, a 3367db96d56Sopenharmony_ci :exc:`ValueError` is raised. 3377db96d56Sopenharmony_ci 3387db96d56Sopenharmony_ci .. versionadded:: 3.2 3397db96d56Sopenharmony_ci 3407db96d56Sopenharmony_ci .. method:: get_break(filename, lineno) 3417db96d56Sopenharmony_ci 3427db96d56Sopenharmony_ci Return True if there is a breakpoint for *lineno* in *filename*. 3437db96d56Sopenharmony_ci 3447db96d56Sopenharmony_ci .. method:: get_breaks(filename, lineno) 3457db96d56Sopenharmony_ci 3467db96d56Sopenharmony_ci Return all breakpoints for *lineno* in *filename*, or an empty list if 3477db96d56Sopenharmony_ci none are set. 3487db96d56Sopenharmony_ci 3497db96d56Sopenharmony_ci .. method:: get_file_breaks(filename) 3507db96d56Sopenharmony_ci 3517db96d56Sopenharmony_ci Return all breakpoints in *filename*, or an empty list if none are set. 3527db96d56Sopenharmony_ci 3537db96d56Sopenharmony_ci .. method:: get_all_breaks() 3547db96d56Sopenharmony_ci 3557db96d56Sopenharmony_ci Return all breakpoints that are set. 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci 3587db96d56Sopenharmony_ci Derived classes and clients can call the following methods to get a data 3597db96d56Sopenharmony_ci structure representing a stack trace. 3607db96d56Sopenharmony_ci 3617db96d56Sopenharmony_ci .. method:: get_stack(f, t) 3627db96d56Sopenharmony_ci 3637db96d56Sopenharmony_ci Return a list of (frame, lineno) tuples in a stack trace, and a size. 3647db96d56Sopenharmony_ci 3657db96d56Sopenharmony_ci The most recently called frame is last in the list. The size is the number 3667db96d56Sopenharmony_ci of frames below the frame where the debugger was invoked. 3677db96d56Sopenharmony_ci 3687db96d56Sopenharmony_ci .. method:: format_stack_entry(frame_lineno, lprefix=': ') 3697db96d56Sopenharmony_ci 3707db96d56Sopenharmony_ci Return a string with information about a stack entry, which is a 3717db96d56Sopenharmony_ci ``(frame, lineno)`` tuple. The return string contains: 3727db96d56Sopenharmony_ci 3737db96d56Sopenharmony_ci * The canonical filename which contains the frame. 3747db96d56Sopenharmony_ci * The function name or ``"<lambda>"``. 3757db96d56Sopenharmony_ci * The input arguments. 3767db96d56Sopenharmony_ci * The return value. 3777db96d56Sopenharmony_ci * The line of code (if it exists). 3787db96d56Sopenharmony_ci 3797db96d56Sopenharmony_ci 3807db96d56Sopenharmony_ci The following two methods can be called by clients to use a debugger to debug 3817db96d56Sopenharmony_ci a :term:`statement`, given as a string. 3827db96d56Sopenharmony_ci 3837db96d56Sopenharmony_ci .. method:: run(cmd, globals=None, locals=None) 3847db96d56Sopenharmony_ci 3857db96d56Sopenharmony_ci Debug a statement executed via the :func:`exec` function. *globals* 3867db96d56Sopenharmony_ci defaults to :attr:`__main__.__dict__`, *locals* defaults to *globals*. 3877db96d56Sopenharmony_ci 3887db96d56Sopenharmony_ci .. method:: runeval(expr, globals=None, locals=None) 3897db96d56Sopenharmony_ci 3907db96d56Sopenharmony_ci Debug an expression executed via the :func:`eval` function. *globals* and 3917db96d56Sopenharmony_ci *locals* have the same meaning as in :meth:`run`. 3927db96d56Sopenharmony_ci 3937db96d56Sopenharmony_ci .. method:: runctx(cmd, globals, locals) 3947db96d56Sopenharmony_ci 3957db96d56Sopenharmony_ci For backwards compatibility. Calls the :meth:`run` method. 3967db96d56Sopenharmony_ci 3977db96d56Sopenharmony_ci .. method:: runcall(func, /, *args, **kwds) 3987db96d56Sopenharmony_ci 3997db96d56Sopenharmony_ci Debug a single function call, and return its result. 4007db96d56Sopenharmony_ci 4017db96d56Sopenharmony_ci 4027db96d56Sopenharmony_ciFinally, the module defines the following functions: 4037db96d56Sopenharmony_ci 4047db96d56Sopenharmony_ci.. function:: checkfuncname(b, frame) 4057db96d56Sopenharmony_ci 4067db96d56Sopenharmony_ci Return True if we should break here, depending on the way the 4077db96d56Sopenharmony_ci :class:`Breakpoint` *b* was set. 4087db96d56Sopenharmony_ci 4097db96d56Sopenharmony_ci If it was set via line number, it checks if 4107db96d56Sopenharmony_ci :attr:`b.line <bdb.Breakpoint.line>` is the same as the one in *frame*. 4117db96d56Sopenharmony_ci If the breakpoint was set via 4127db96d56Sopenharmony_ci :attr:`function name <bdb.Breakpoint.funcname>`, we have to check we are in 4137db96d56Sopenharmony_ci the right *frame* (the right function) and if we are on its first executable 4147db96d56Sopenharmony_ci line. 4157db96d56Sopenharmony_ci 4167db96d56Sopenharmony_ci.. function:: effective(file, line, frame) 4177db96d56Sopenharmony_ci 4187db96d56Sopenharmony_ci Return ``(active breakpoint, delete temporary flag)`` or ``(None, None)`` as the 4197db96d56Sopenharmony_ci breakpoint to act upon. 4207db96d56Sopenharmony_ci 4217db96d56Sopenharmony_ci The *active breakpoint* is the first entry in 4227db96d56Sopenharmony_ci :attr:`bplist <bdb.Breakpoint.bplist>` for the 4237db96d56Sopenharmony_ci (:attr:`file <bdb.Breakpoint.file>`, :attr:`line <bdb.Breakpoint.line>`) 4247db96d56Sopenharmony_ci (which must exist) that is :attr:`enabled <bdb.Breakpoint.enabled>`, for 4257db96d56Sopenharmony_ci which :func:`checkfuncname` is True, and that has neither a False 4267db96d56Sopenharmony_ci :attr:`condition <bdb.Breakpoint.cond>` nor positive 4277db96d56Sopenharmony_ci :attr:`ignore <bdb.Breakpoint.ignore>` count. The *flag*, meaning that a 4287db96d56Sopenharmony_ci temporary breakpoint should be deleted, is False only when the 4297db96d56Sopenharmony_ci :attr:`cond <bdb.Breakpoint.cond>` cannot be evaluated (in which case, 4307db96d56Sopenharmony_ci :attr:`ignore <bdb.Breakpoint.ignore>` count is ignored). 4317db96d56Sopenharmony_ci 4327db96d56Sopenharmony_ci If no such entry exists, then (None, None) is returned. 4337db96d56Sopenharmony_ci 4347db96d56Sopenharmony_ci 4357db96d56Sopenharmony_ci.. function:: set_trace() 4367db96d56Sopenharmony_ci 4377db96d56Sopenharmony_ci Start debugging with a :class:`Bdb` instance from caller's frame. 438