# pdb

# pdb

pdb 是 Python 的内置调试器,可用于在代码中进行调试和查找错误。以下是使用 pdb 进行基本调试的一般步骤:

  1. 导入 pdb 模块

    import pdb
    
  2. 在代码中设置断点

    可以在代码中任何想要进行调试的地方设置断点。有两种常用方式:

    • 在特定行设置断点

      pdb.set_trace()  # 在代码中的某行设置断点
      
    • 在出错时自动进入调试模式

      可以使用 -m pdb 标志来运行 Python 脚本,并在出错时自动进入调试模式。

      python -m pdb your_script.py
      
  3. 启动调试器

    • 如果在代码中设置了 pdb.set_trace(),当执行到这行代码时程序会暂停,并进入交互式调试模式。
    • 如果使用 -m pdb 标志运行脚本,则在程序第一个能够暂停的位置暂停并进入交互式调试模式。
  4. 使用 pdb 命令

    一旦进入调试模式,你可以使用 pdb 提供的命令来检查变量、执行代码和跟踪代码执行流程。以下是一些常用的命令:

    • l [<line>]list: 显示当前代码 / <line>上下文的片段, 多次执行则显示更多。
    • nnext: 执行下一行代码,如果有函数调用则执行函数调用(不进入)。
    • ccontinue: 继续执行代码直到下一个断点。
    • pprint: 打印变量的值。
    • sstep: 逐步执行代码,如果有函数调用,则进入函数内部。
    • qquit: 退出调试器。
    • wwhere: 显示当前调用栈。
    • uup: 移动到当前调用栈的上一层。
    • aargs: 打印当前函数的参数列表。
    • rreturn: 执行代码直到从当前函数返回。
    • unt <line>: 执行代码直到指定行。
    • b <line>: 在指定行设置断点。
    • cl <line>: 清除指定行的断点。
    • help <command>: 显示指定命令的帮助信息。
  5. 控制程序流程

    使用 pdb 命令可以查看和控制代码执行的流程。你可以逐行执行代码、查看变量的值,直到找到问题所在。

  6. 退出调试器

    当你完成调试时,使用 qquit 命令退出调试器,并让程序继续正常执行。

例子:

import pdb

def func(a, b):
    pdb.set_trace()  # 设置断点
    sum = 0
    for i in range(b):
        sum += a
    return sum

x = 5
y = 3
z = func(x, y)
print(z)

在上述示例中,pdb.set_trace() 将在 add 函数内创建一个断点。当运行这段代码时,程序将在调用 add(x, y) 时暂停,进入交互式调试模式,允许你检查变量值、执行代码行等操作。