python - pdb

两种方法利用原生功能, 对python进行debug:

python -m pdb file.py

or

breakpoint()

基本的命令1

打印帮助信息

help
help list
# 简写 h

帮助结果:

longlist | ll  # 说明两个命令一样
l(ist) # l 和 list 一样

查看程序运行的位置:

list # 显示11行源码
list . # 并标记当前运行的位置
# 简写 l
longlist # 显示当前函数的所有源码
# 简写 ll

运行:

next # 运行下一行
# 简写 n
continue # 运行到下一个断点/结尾
# 简写 c, cont
until 23 # 运行到第23行
# 简写 unt
jump 23 # 跳到第23行
# 简写 j
step # 遇到函数进入运行
# 简写 s

return # 从函数中跳出运行
# 简写 r

检索和查询:

where # 打印堆栈, 最新的在底部

什么是堆栈?

up # 查看上一个堆栈, 寻找是谁赋值的.
up 3 # 查看上3个堆栈
# 简写 u

down # 在up后, 恢复一步堆栈. 最后回到up的起始点
down 3 # 恢复3步堆栈
# 简写 d
args # 打印当前所在函数的参数值
# 简写 a
whatis var1 # 打印参数的类型
whatis var1+var2 # 或者表达式结果的类型
p var1+var2 # 打印表达式的值

添加断点:

continue 12 可以直接运行到某行, 也有断点的效果. 和后面临时断点类似.

b 12 在某行添加断点
b func 在函数第一行添加断点
b test.py:12 在文件的第12行添加断点
b 查看断点设置

临时断点: 执行一次后自动删除
tbreak 语法和 b 一样

清除断点:
cl 12 15 17 清除指定 的断点
cl test.py:15 清除指定文件中的指定断点
cl 清除当前文件的所有断点

启动交互解释器: interact 使用ctrl+d返回

退出调试: q

一些技巧

a # 执行查看函数参数
!a # 打印变量a的值