• 技术文章 >Python技术 >Python基础教程

    python中pdb的使用流程

    小妮浅浅小妮浅浅2021-09-06 11:03:00原创95

    1、pdb启动。

    当前frame绑定跟踪函数trace_dispatch。

    def trace_dispatch(self, frame, event, arg):
         if self.quitting:
             return # None
         if event == 'line':
             return self.dispatch_line(frame)
         if event == 'call':
             return self.dispatch_call(frame, arg)
         if event == 'return':
             return self.dispatch_return(frame, arg)
         if event == 'exception':
         ...

    2、每一帧不同事件的处理都会经过中断控制逻辑。

    主要是stop_here(line事件也会经过break_here)函数,处理后决定代码是否中断,需要中断到哪一行。

    如果需要中断,触发子类方法user_#event。

    子类可以通过interaction更新栈帧信息,并在控制台上打印相应的信息,然后执行cmdloop,使控制台等待交互输入。

    def interaction(self, frame, traceback):
         self.setup(frame, traceback) # 当前栈、frame、local vars
         self.print_stack_entry(self.stack[self.curindex])
         self.cmdloop()
         self.forget()

    3、用户输入调试命令。

    如next并返回汽车时,他们将首先调用set_#命令,设置stopframe、returnframe和stoplineno,这将影响中断控制的逻辑,从而决定运行到下一帧的中断结果。

    4、调试过程控制类的命令。

    一般do_#命令都会返回1,这样这次runloop马上就结束了,下一次运行到某一帧触发中断会再次启动runloop(见步骤3);对信息获取类的命令,do_#命令没有返回值,以保持目前的中断状态。

    5、代码运行到下一帧,重复步骤3。

    以上就是python中pdb的使用流程,希望对大家有所帮助。更多Python学习指路:python基础教程

    专题推荐:python pdb
    品易云
    上一篇:python中pdb模块的运行原理 下一篇:python中pdb的中断控制

    相关文章推荐

    • python导入模块的本质探究• python文件写入和关闭• python中有哪些邮件模块• python邮件协议的介绍• python爬虫的分类方法• python爬虫获取数据的步骤• python变量类型的使用• python中5种数据类型的介绍• python数据类型转换的注意点• python变量赋值的操作• python copy模块中的函数使用• python中Monkey测试的介绍• python中Monkey测试有什么特点• python Monkey的测试流程

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网