Python 调试库 pdb

倖福魔咒の 提交于 2020-01-22 19:30:24



之前写比较复杂的 shell脚本的时候,经常会用 -x 来调试,很方便也很清晰。

然后我就在想 python 脚本是不是也有类似的调试方法。

一查果然也有,就是 pdb

感觉也挺好用的,这里记录下使用过程。




一、Python pdb 简介


Python 的 pdb,是其自带的一个调试库。
它为 Python 程序提供了交互式的源代码调试功能,是命令行版本的 IDE 断点调试器,完美地解决了不借助工具进行调试的问题。




二、Python pdb 使用方法


使用方法有两种:

1、import 使用

# test.py

import pdb
pdb.set_trace()

a = 20
b = 10
c = 15

e = (a + b) * c
print "(a + b) * c =",  e

e = ((a + b) * c)
print "((a + b) * c) =",  e

e = a + (b * c)
print "a + (b * c) =",  e

2、命令行直接用

python3 -m pdb  test.py



三、Python pdb 运行简析


当运行这个程序时,它的输出是下面这样的:

./test.py

> /tmp/test.py(8)<module>()
-> a = 20
(Pdb)
(Pdb) n
> /tmp/test.py(9)<module>()
-> b = 10
(Pdb)
> /tmp/test.py(10)<module>()
-> c = 15
(Pdb)
> /tmp/test.py(12)<module>()
-> e = (a + b) * c
(Pdb)
> /tmp/test.py(13)<module>()
-> print "(a + b) * c =",  e
(Pdb)
(a + b) * c = 450
> /tmp/test.py(15)<module>()
-> e = ((a + b) * c)
(Pdb)
> /tmp/test.py(16)<module>()
-> print "((a + b) * c) =",  e
(Pdb)
((a + b) * c) = 450
> /tmp/test.py(18)<module>()
-> e = a + (b * c)
(Pdb)
> /tmp/test.py(19)<module>()
-> print "a + (b * c) =",  e
(Pdb)
a + (b * c) = 170
--Return--

这里 pdb 有一些 Debugger Commands ,比如:

n + 回车 :  继续执行下一句
p 变量名  + 回车 :  打印变量名 和它的值
b 断点行号  + 回车:  在某行设置断点
c + 回车 : 一直运行到下一个断点

更多的 pdb 使用详情,请戳参考文档: pdb — The Python Debugger

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!