def set_trace(self, frame=None, as_breakpoint=None, paused=True):
    "Start debugging from `frame`.\n\n        If frame is not specified, debugging starts from caller's frame.\n\n        Unlike Bdb.set_trace(), this does not call self.reset(), which causes\n        the debugger to enter bdb source code. This also implements treating\n        set_trace() calls as breakpoints in the PuDB UI.\n\n        If as_breakpoint=True (the default), this call will be treated like a\n        breakpoint in the UI (you can press 'b' on it to disable breaking\n        here).\n\n        If paused=False, the debugger will not break here.\n        "
    if (as_breakpoint is None):
        if (not paused):
            as_breakpoint = False
        else:
            as_breakpoint = True
    if (frame is None):
        frame = thisframe = sys._getframe().f_back
    else:
        thisframe = frame
    while frame:
        frame.f_trace = self.trace_dispatch
        self.botframe = frame
        frame = frame.f_back
    thisframe_info = (self.canonic(thisframe.f_code.co_filename), thisframe.f_lineno)
    if ((thisframe_info not in self.set_traces) or self.set_traces[thisframe_info]):
        if as_breakpoint:
            self.set_traces[thisframe_info] = True
            if (self.ui.source_code_provider is not None):
                self.ui.set_source_code_provider(self.ui.source_code_provider, force_update=True)
        if paused:
            self.set_step()
        else:
            self.set_continue()
        sys.settrace(self.trace_dispatch)
    else:
        return
Start debugging from `frame`.

If frame is not specified, debugging starts from caller's frame.

Unlike Bdb.set_trace(), this does not call self.reset(), which causes
the debugger to enter bdb source code. This also implements treating
set_trace() calls as breakpoints in the PuDB UI.

If as_breakpoint=True (the default), this call will be treated like a
breakpoint in the UI (you can press 'b' on it to disable breaking
here).

If paused=False, the debugger will not break here.
def set_trace(self, frame=None, as_breakpoint=None, paused=True):
    "Start debugging from `frame`.\n\n        If frame is not specified, debugging starts from caller's frame.\n\n        Unlike Bdb.set_trace(), this does not call self.reset(), which causes\n        the debugger to enter bdb source code. This also implements treating\n        set_trace() calls as breakpoints in the PuDB UI.\n\n        If as_breakpoint=True (the default), this call will be treated like a\n        breakpoint in the UI (you can press 'b' on it to disable breaking\n        here).\n\n        If paused=False, the debugger will not break here.\n        "
    if (as_breakpoint is None):
        if (not paused):
            as_breakpoint = False
        else:
            as_breakpoint = True
    if (frame is None):
        frame = thisframe = sys._getframe().f_back
    else:
        thisframe = frame
    while frame:
        frame.f_trace = self.trace_dispatch
        self.botframe = frame
        frame = frame.f_back
    thisframe_info = (self.canonic(thisframe.f_code.co_filename), thisframe.f_lineno)
    if ((thisframe_info not in self.set_traces) or self.set_traces[thisframe_info]):
        if as_breakpoint:
            self.set_traces[thisframe_info] = True
            if (self.ui.source_code_provider is not None):
                self.ui.set_source_code_provider(self.ui.source_code_provider, force_update=True)
        if paused:
            self.set_step()
        else:
            self.set_continue()
        sys.settrace(self.trace_dispatch)
    else:
        return