版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/shuzfan/article/details/78964206
PUDB是全屏的基于控制台的可视化调试器,主页为https://pypi.python.org/pypi/pudb
其特点主要有:
- 源码语法高亮,栈、断点、变量可见并且一直动态更新。变量展示还有很多可以定制化的功能
- 基于键盘,简单高效。支持光标键和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”命令后的结果。