习惯了Pycharm的用户,通常都喜欢Pycharm强大的debug配置。但pycharm虽好,但需要图形化的UI界面,事实上在很多项目开发上有UI界面是很奢侈的事情。所以在无界面的vim下debug,难道只能用print了?那效率就太低下了。
事实上,python有内置的断点工具,直接在代码中插入即可完成断点调试。
在python3.7之前,这个工具叫pdb,即python debugger的缩写。
在python3.7之后,breakpoint直接变成了关键字,可以之际作为断点插入。
断点工具的使用
先介绍pdb,即python3.7之前的版本:
import pdb
a = 3
b = 4
pdb.set_trace() # insert breakpoint
a += 1
b = b + a
pdb.set_trace() # insert breakpoint
- 1
- 2
- 3
- 4
- 5
- 6
- 7
如上所示的脚本,我一共插了两个断点,分别是第4行和最后一行。插入断点之后的脚本,咱们正常运行即可,假设保存为t1.py:
python t1.py
- 1
运行之后,会出现:
-> a += 1
(Pdb)
- 1
- 2
程序卡在第一个断点处,这个时候有个(Pdb)在左侧,你输入不同的指令就可以做出不同的反应。比如,你想查看变量b的值,可以输入:
-> a += 1
(Pdb) p b
- 1
- 2
p后面加什么变量名,咱们就可以看到什么变量的值。这一步很easy,不就不过多展示,可以自己做实验跑跑。
输入c,就会跑到下一个断点:
-> a += 1
(Pdb) p a
3
(Pdb) p b
4
(Pdb) c
--Return--
> /path/username/experi/breakpoint/t1.py(5)<module>()->None
-> a += 1
(Pdb) p a
4
(Pdb) p b
8
(Pdb)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
就是这么简单~
对于Python3.7以上,那就更简答了,上述代码改成这样就可以了:
a = 3
b = 4
breakpoint() # insert breakpoint
a += 1
b = b + a
breakpoint() # insert breakpoint
- 1
- 2
- 3
- 4
- 5
- 6
不需要import,单词意思非常明晰,然后使用操作跟pdb一毛一样,只是包装了一下而已。~