Pdb— Python的调试器
阅读原文时间:2023年07月09日阅读:2

参考:Pdb— Python的调试器

pdb 模块定义了一个交互式源代码调试器,用于 Python 程序。它支持在源码行间设置(有条件的)断点和单步执行,检视堆栈帧,列出源码列表,以及在任何堆栈帧的上下文中运行任意 Python 代码。它还支持事后调试,可以在程序控制下调用。

用pdb调试有多种方式可选:

  1. 命令行

    python3 -m pdb myscript.py
  2. Python交互环境

    >>> import pdb
    >>> import mymodule
    >>> pdb.run('mymodule.test()')
  3. 程序调用

    一般是在程序中可能出现问题的地方,插入pdb.set_trace(),程序运行到了pdb.set_trace()处就会停止,然后输入调试命令,即可进行调试。

    Example:

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

命令

作用

h(elp) [command]

不带参数时,显示可用的命令列表。
参数为 command 时,打印有关该命令的帮助。

b(reak)

设置断点。
如果带有 lineno 参数,则在当前文件相应行处设置一个断点。
如果带有 function 参数,则在该函数的第一条可执行语句处设置一个断点。

cl(ear)

清除断点
如果参数是 filename:lineno,则清除此行上的所有断点。
如果参数是空格分隔的断点编号列表,则清除这些断点。
如果不带参数,则清除所有断点。

s(tep)

执行当前行,在第一个可以停止的位置(在调用的函数中或在当前函数的下一行)停下。

n(ext)

继续运行,直到运行到当前函数的下一行,或当前函数返回为止。

r(eturn)

继续运行,直到当前函数返回。

l(ist) [first[, last]]

列出当前文件的源代码。

a(rgs)

打印当前函数的参数列表。打印当前函数的参数列表。

p expression

在当前上下文中运行表达式 expression 并打印它的值。

whatis expression

打印 expression 的类型。

q(uit)

退出调试器。 被执行的程序将被中止。