文章目录
pdb 是 Python 内置的交互式调试工具,可以帮助开发者逐步调试代码、查看变量、分析问题。以下是 pdb 调试器的详解,包括用法、常见命令及技巧
1. 启动 pdb 调试器
1.1 在代码中插入断点
通过 pdb.set_trace()
设置断点,程序运行到此处时会暂停并进入调试模式。
import pdb
def example_function():
x = 10
y = 20
pdb.set_trace() # 设置断点
z = x + y
print(f"Result: {
z}")
example_function()
运行程序后,会暂停在set_trace()
处,进入交互式调试模式。
1.2 使用命令行直接调试脚本
通过 -m pdb
启动脚本进入调试模式:
python -m pdb script.py
程序会在脚本的第一行暂停,可以逐步执行代码。
运行脚本时加上 -m pdb 参数,发生异常时会自动进入调试模式:
python -m pdb script.py
或者在代码中引入
import pdb
pdb.pm() # 在异常后调用,进入调试模式
- 正常运行 script.py。
- 如果程序中发生异常,pdb 会捕获它并进入调试模式。
- 你可以直接使用调试命令,比如
bt
查看调用栈,或者l
查看代码。
2. 常用调试命令
2.1 基本命令
2.2 高级命令
2.3 断点操作
(1) 设置断点
b 12 # 在第 12 行设置断点
b example_function # 在函数 example_function 的入口处设置断点
b path/script.py:15 # 在 script.py 的第 15 行设置断点
(2)查看断点
b # 列出所有断点及其状态
(3)清除断点
cl 1 # 清除断点编号 1
cl # 清除所有断点
(4)启动、关闭断点
disable 7 # disable breakpoint 7
enable 7 # enable breakpoint 7
(5)条件断点
b path/script.py:20, x > 10 # 在第 script 脚本的第20 行设置断点,只有 x > 10 时断点才生效
3. 调试过程示例
假设以下代码存在问题:
def add_numbers(a, b):
result = a + b
return result
def main():
x = 10
y = "20" # Bug: y 是字符串类型
z = add_numbers(x, y)
print(f"The result is {
z}")
main()
我们可以用 pdb 调试:
添加断点的方式
将 pdb.set_trace() 添加到代码中
def add_numbers(a, b):
result = a + b
return result
def main():
x = 10
y = "20"
pdb.set_trace() # 在此处调试
z = add_numbers(x