0%

[2023-09-09] Python #1:Pdb调试器

Pdb介绍

网址:pdb — The Python Debugger

介绍:模块pdb为Python程序定义了一个交互式源代码调试器。它支持在源行级别设置(条件)断点和单步执行,检查堆栈帧,列出源代码,以及在任何堆栈帧的上下文中评估任意Python代码。它还支持死后调试,并且可以在程序控制下调用。

Pdb用法

  • 非侵入式方法(不用额外修改源代码,在命令行下直接运行就能调试)
1
python3 -m pdb filename.py
  • 侵入式方法(需要在被调试的代码中添加一行代码然后再正常运行代码)
1
2
3
4
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 断点序号(多个以空格分隔)
print 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 \ 帮助