Python 的 Debug 工具

1. 命令行使用 pdb

(1) 我们先写个简单的 python 程序 a.py 如下:

1
2
3
4
for i in range(0,3):
print(i)
print("@@@@")
print("###")

(2) 用 pdb 调试

1
$ pdb a.py  # 此后看到 > 提示符,即可以输入命令调试

2. 常用 pdb 命令

pdb 命令和 gdb 差不多,最常用的命令如下:

  1. 单步调试(进入函数):s(tep)

  2. 单步调试(不进入函数):n(ext)

  3. 继续往后执行,直到下个断点:c(ont(inue))

  4. 运行到函数结束:r(eturn)

  5. 运行到当前循环结束:unt(il)

  6. 设置断点:b(reak) 文件名: 行号(或行号,或函数名)

  7. 显示当前调用关系:w(here)

  8. 显示当前代码段:l(ist)

  9. 显示变量:p(rint) 变量名

  10. 显示当前函数的参数:a(rgs)

  11. 显示帮助信息:h(elp)

  12. 退出:q(uit)

3. Notebook 使用 pdb

(1) 单步调试

  用 Notebook 开发时,常把功能分块写入 Cell 分别调试,类似单步调试,但有时需要在现有函数内部调试,或者单步运行,此时可以直接在程序中打断点:想在哪儿打断点,就在该处输入:

1
import pdb; pdb.set_trace()

  运行到此处时就出现了 pdb 的命令行,此时我们可以输入上方的 pdb 命令单步调试,也可以在输入框中运行 python 语句。

(2) 程序报错时调出 pdb

  在程序中加入%pdb 即可