官方文档:https://docs.python.org/3/library/pdb.html
使用pdb的方式有两种,其中一种是在程序内部添加代码,这种方式和添加print差不多。
再啰嗦一句,还有ipdb,ipdb是pdb的加强版,如果感兴趣可以再去研究。
要注意的是ipdb只能在3.3以上的python版本中使用。
程序内部:
1 | from ipdb import set_trace |
使用命令行的方式:
1 | python -m pdb xxx.py |
常用命令
- enter 重复上次命令
- c(ont(inue)) 继续
- h(elp) 帮助
- a(rgs) 打印当前函数的参数
- j(ump) 让程序跳转到指定的行数
- l(ist) 可以列出当前将要运行的代码块
- n(ext) 让程序运行下一行,如果当前语句有一个函数调用,用 n 是不会进入被调用的函数体中的
- p(rint) 最有用的命令之一,打印某个变量
- pp 好看一点的p
- b(reak) 添加断点
b 列出当前所有断点,和断点执行到统计次数
b xx:当前脚本的xx行添加断点
b filename:xx:脚本filename的xx行添加断点
b function:在函数function的第一条可执行语句处添加断点 - q(uit) 退出调试
- r(eturn) 继续执行,直到函数体返回
- s(tep) 跟 n 相似,但是如果当前有一个函数调用,那么 s 会进入被调用的函数体中
- 输入pdb不认识的命令,pdb会把他当做Python语句在当前环境下执行