1 Python调试器(PDB)

1.1 什么是PDB?

Python调试器(PDB)是一个用于调试Python程序的标准模块。它允许开发者在代码执行过程中设置断点、单步执行、检查变量值以及执行其他调试操作。对于理解和修正复杂程序中的错误非常有用。

1.2 安装PDB

好消息是,PDB作为Python标准库的一部分,无需额外安装即可使用。只需确保你的Python环境已经设置好。

1.3 基本使用方法

  1. 导入PDB模块

    在你的Python脚本中,首先需要导入pdb模块:

    1
    import pdb
  2. 设置断点

    使用pdb.set_trace()函数来手动设置一个断点:

    1
    2
    3
    4
    5
    6
    def example_function():
    print("Starting the function")
    pdb.set_trace() # 设置断点
    result = "Hello, World!"
    print(result)
    return result
  3. 运行脚本

    运行包含断点的脚本。当程序执行到pdb.set_trace()时,控制台会暂停,显示一个交互式提示符 (Pdb>),此时你可以输入命令来进行调试。

  4. 常用命令

    • l (list): 列出当前文件的源码。
    • n (next): 执行下一行。
    • s (step): 进入当前行的函数内部。
    • c (continue): 继续执行直到下一个断点。
    • q (quit): 退出调试模式。
    • p (print): 显示变量值,例如 p variable_name
    • h (help): 获取帮助信息。

1.4 示例

假设我们有一个简单的程序,想要调试其中的一个函数:

1
2
3
4
5
6
7
8
9
def calculate_area(length, width):
print("Calculating area...")
pdb.set_trace()
area = length * width
print(f"The area is {area}")
return area

if __name__ == "__main__":
calculate_area(10, 5)

当你运行这个脚本时,在断点处程序会暂停,并进入PDB调试模式。你可以输入n来逐行执行,或者输入p area来查看area变量的值。

1.5 高级用法

  • 自动加载PDB

    如果你想在每次脚本崩溃时自动启动PDB,可以在脚本顶部加入以下代码:

    1
    2
    import sys
    sys.breakpointhook = pdb.set_trace
  • 临时断点

    可以使用breakpoint()代替pdb.set_trace(),这会在运行时调用当前设置的断点hook。

  • 条件断点

    有时候你只想在某些条件下才触发断点,可以这样做:

    1
    2
    if condition:
    pdb.set_trace()