Python(pdb)-排队执行命令

我正在实现一个“断点”系统以用于我的Python开发,该系统将允许我调用一个实质上调用pdb.set_trace()的函数.

我想实现的某些功能要求我在set_trace上下文中时通过代码控制pdb.

例:

disableList = []
def breakpoint(name=None):
    def d():
        disableList.append(name)
        #****
        #issue 'run' command to pdb so user
        #does not have to type 'c'
        #****

    if name in disableList:
        return

    print "Use d() to disable breakpoint, 'c' to continue"
    pdb.set_trace();

在上面的示例中,如何实现#****标记的注释?

在该系统的其他部分,我想发出一个“ up”命令,或两个连续的“ up”命令,而又不离开pdb会话(因此,用户最终出现在pdb提示符下,但在调用堆栈上上升了两个级别).

解决方法:

您可以调用低级方法来获得对调试器的更多控制:

def debug():
    import pdb
    import sys

    # set up the debugger
    debugger = pdb.Pdb()
    debugger.reset()

    # your custom stuff here
    debugger.do_where(None) # run the "where" command

    # invoke the interactive debugging prompt
    users_frame = sys._getframe().f_back # frame where the user invoked `debug()`
    debugger.interaction(users_frame, None)

if __name__ == '__main__':
    print 1
    debug()
    print 2

您可以在以下位置找到有关pdb模块的文档:http://docs.python.org/library/pdb,并在以下位置找到bdb低级调试接口的文档:http://docs.python.org/library/bdb.您可能还需要查看其源代码.

上一篇:python – pdb无法在另一个线程中断?


下一篇:Unplugging, Plugging, and Upgrading a PDB to a New