Python PDB调试处理

作者: 田阅川 | 来源:发表于2019-01-11 11:35 被阅读0次

    前言

    如果你熟悉命令行调试工具,如GDB,那么使用Python中的PDB将获得非常好的体验,PDB不仅支持项目启动时进行调用,也支持在Python shell中交互式调试

    它为Python程序定义了一个交互式源代码调试器。它支持在源代码行级别设置条件断点、单步执行,堆栈检查,源码列表以及在任何堆栈帧的上下文查看。

    用Pdb调试有多种方式

    命令行加-m参数

    命令行启动目标程序,加上-m参数,这样调用 testPdb.py的话断点就是程序执行的第一行之前

    python -m pdb test.py
    

    在python交互环境调试

    >>> import pdb
    >>> import test
    >>> pdb.run('test.test()')
    

    代码中插入一段程序

    比较常用的,就是在程序中间插入一段程序,相对于在一般 IDE 里面打上断点然后启动 debug,不过这种方式是 hardcode的

    if __name__ == "__main__":
      a = 1
      import pdb
      pdb.set_trace()
      b = 2
      c = a + b
      print(c)
    

    常用的命令

    • break: b, 设置断点
    • continue: c, 继续执行程序
    • list: l, 查看当前行的代码段
    • step: s, 进入函数
    • return: r, 执行代码直到从当前函数返回
    • quit: q, 中止并退出
    • next: n, 执行下一行
    • print: p, 打印变量的值
    • help: h, 帮助
    • args: a, 查看传入参数
    • clear num: 删除指定断点
    • bt: 查看函数调用栈帧

    总结

    pdb 调试有个明显的缺陷就是对于多线程,远程调试等支持得不够好,同时没有较为直观的界面显示,不太适合大型的 python 项目。而在较大的 python 项目中,这些调试需求比较常见,因此需要使用更为高级的调试工具。

    原文地址

    兔子先生 - PythonPDB调试处理

    相关文章

      网友评论

        本文标题:Python PDB调试处理

        本文链接:https://www.haomeiwen.com/subject/ejztdqtx.html