其特点主要有:
- 源码语法高亮,栈、断点、变量可见并且一直动态更新。变量展示还有很多可以定制化的功能
- 基于键盘,简单高效。支持光标键和Vi快捷键导航,还支持PDB的某些命令
- 支持搜索源代码,可以使用“m”来调用显示加载模块的模块浏览器
- 可以通过定位一行并点击“b”来设置断点,然后在断点窗口中可视地进行编辑。或者点击“t”来运行光标所在行
- 可以通过按下“!”来直接进入python环境
- PuDB很关注异常处理,post-mortem模式将会使得追踪程序崩溃的最后一步更简单
- 集成IPython
- 支持python2.6以及更高版本,包括python3
我使用的是Anaconda,但是通过conda安装pudb时总是出现网络问题,因此采用下面的形式:
sudo apt-get install python-pudb
或者
pip install pudb
首先给出示例代码:
import pudb; pu.db
def sum(n):
result = 0
for i in range(n):
result = result + i
return result
if __name__ == "__main__":
y1 = sum(10)
y2 = sum(100)
y3 = sum(100)
PUDB的使用很简单,主要分两步:
在代码中插入
import pudb; pu.db
使用pudb命令启动python程序
# 为了演示,这里建立了一个数列求和的python程序:pudbSum.py
pudb pudbSum.py
得到的界面可能如下:
如果需要修改配色等属性,可以执行“Ctrl+P”调出设置界面。我的配色风格为“monokai”。
学习PUDB调试的整个过程中,最需要的快捷键就是“?”,用于调出帮助窗口,如下图所示:
常用的调试命令如下:
Ctrl+p: 打开属性设置
n: next,也就是执行一步
s: step into,进入函数内部
f: finsh current function,结束当前函数?
c: continue,继续执行
b: break point,在光标所在行添加或消除断点
t: to cursor,运行到光标位置
!: 打开python命令行
?: 打开帮助窗口
o: output screen,打开输出窗口/控制台
m: module,打开模块
q: quit,退出PUDB
/: 搜索
,/. 搜索下一个/上一个
PUDB的界面主要分为:左上角的源码,右上角的变量区,左下角的命令行区,右下角的断点区,以及右边中间的StacK区
下面是我添加了一个断电后,执行“c”命令后的结果。