Pdb介绍
介绍:模块pdb为Python程序定义了一个交互式源代码调试器。它支持在源行级别设置(条件)断点和单步执行,检查堆栈帧,列出源代码,以及在任何堆栈帧的上下文中评估任意Python代码。它还支持死后调试,并且可以在程序控制下调用。
Pdb用法
- 非侵入式方法(不用额外修改源代码,在命令行下直接运行就能调试)
python3 -m pdb filename.py
- 侵入式方法(需要在被调试的代码中添加一行代码然后再正常运行代码)
import pdb;pdb.set_trace()
# or
import pdb
pdb.set_trace()
Pdb常用命令
完整命令 | 命令 | 解释 | 说明 |
---|---|---|---|
list | l | 查看当前行的代码段 | 查看当前位置前后11行源代码(多次会翻页),当前位置在代码中会用–>这个符号标出来 |
ll | 查看当前函数或框架的所有源代码 | ||
break | b | 设置断点 | |
b lineno | 在lineno行设置断点 | ||
b filename:lineno | filename文件名,在filename的lineno行设置断点 | ||
b functionname | 在函数名执行的第一行设置断点 | ||
tbreak | \ | 临时断点,执行一次后时自动删除(这就是它被称为临时断点的原因) | 参数同break,b |
clear | cl | 清除所有断点 | 1.不带参数用于清除所有断点,会提示确认(包括临时断点) 2.带参数则清除指定文件行或当前文件指定序号的断点 |
cl filename:lineno | 清除指定文件中的指定行号的断点 | filename: 文件名 lineno: 断点行号 | |
cl bpnumber [bpnumber …] | 清除当前文件中的一个或多个断点 | bpnumber: break point number 断点行号。bpnumber 断点序号(多个以空格分隔) | |
p x | 打印变量x的值 | ||
step | s | 进入函数(能够进入函数体)(进入 for 循环用 next 而不是用 step) | |
next | n | 执行下一行(不会进入函数体) | |
return | r | 执行下一行(在函数中时会直接执行到函数返回处) | |
continue | c | 持续执行下去,直到遇到一个断点 | |
until | unt lineno | 持续执行直到运行到指定行(或遇到断点) | |
jump | j lineno | 直接跳转到指定行(注意,被跳过的代码不执行) | |
up | u | 返回到上个调用点(不是上一行) | |
args | a | 在函数中时打印函数的参数和参数的值 | |
whatis | whatis expression | 打印表达式的类型,常用来打印变量值 | |
where | w | 打印堆栈信息,最新的帧在最底部。箭头表示当前帧。 | |
! | \ | 在pdb中执行语句 | |
exit | q | 中止调试,退出程序 | |
help | \ | 帮助 |