使用pdb调试python程序

官方文档:https://docs.python.org/3/library/pdb.html
使用pdb的方式有两种,其中一种是在程序内部添加代码,这种方式和添加print差不多。
再啰嗦一句,还有ipdb,ipdb是pdb的加强版,如果感兴趣可以再去研究。
要注意的是ipdb只能在3.3以上的python版本中使用。

程序内部:

1
2
from ipdb import set_trace
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语句在当前环境下执行