使用PDB简单调试Python程序简明指南


Posted in Python onApril 25, 2015

在 Python 中也可以像 gcc/gdb 那样调试程序,只要在运行 Python 程序时引入 pdb 模块(假设要调试的程序名为 d.py):

$ vi d.py

#!/usr/bin/python
def main():

        i, sum = 1, 0

        for i in xrange(100):

                sum = sum + i

        print sum
if __name__ == '__main__':

        main()
$ python -m pdb d.py

运行上面的命令后进入以下界面,可以输入类似 gdb 的命令来改变程序的执行流程:
$ python -m pdb 1.py 

> d.py(3)()

-> def main():

(Pdb)

list 显示程序的最近代码段:
(Pdb) list

  1   #!/usr/bin/python

  2   

  3  -> def main():

  4    i, sum = 1, 0

  5    for i in xrange(100):

  6     sum = sum + i

  7    print sum

  8    

  9   if __name__ == '__main__':

 10    main()

[EOF]

next 或者 n 执行下一行代码:
(Pdb) next

> d.py(9)()

-> if __name__ == '__main__':

用 break 在第6行设置一个断点:
(Pdb) break d.py:6

Breakpoint 1 at d.py:6
(Pdb) list

  1   #!/usr/bin/python

  2   

  3   def main():

  4    i, sum = 1, 0

  5  ->  for i in xrange(100):

  6 B   sum = sum + i

  7    print sum

  8    

  9   if __name__ == '__main__':

 10    main()

[EOF]

如果想在函数处设置断点:
(Pdb) break d.main

d.py:3
(Pdb) list

  1   #!/usr/bin/python

  2   

  3 B def main():

  4  ->  i, sum = 1, 0

  5    for i in xrange(100):

  6     sum = sum + i

  7    print sum

  8    

  9   if __name__ == '__main__':

 10    main()

[EOF]

还可以给断点加条件,比如设置条件只有当 sum > 50 的时候才 break:
(Pdb) break d.py:6, sum > 50

Breakpoint 1 at d.py:6

如果想查看某个变量的值,可以用 pp 命令打印出来:
(Pdb) step

> d.py(5)main()

-> for i in xrange(100):

(Pdb) pp sum

0

可以直接在程序里使用 pdb 模块,import pdb 后 pdb.set_trace():
#!/usr/bin/python

import pdb
def main():

        i, sum = 1, 0

        for i in xrange(100):

                sum = sum + i

        pdb.set_trace()

        print sum
if __name__ == '__main__':

        main()

这样只要运行程序 ./d.py 就可以直接运行到 print sum 处:
$ ./d.py 

> d.py(9)main()

-> print sum

(Pdb)

总结

使用PDB简单调试Python程序简明指南

Python 相关文章推荐
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
window下eclipse安装python插件教程
Apr 24 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
pytorch 修改预训练model实例
Jan 18 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
浅析matlab中imadjust函数
Feb 27 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
Python脚本判断 Linux 是否运行在虚拟机上
Apr 25 #Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 #Python
使用Python的Tornado框架实现一个一对一聊天的程序
Apr 25 #Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 #Python
安装Python的web.py框架并从hello world开始编程
Apr 25 #Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 #Python
Python的Bottle框架中获取制定cookie的教程
Apr 24 #Python
You might like
Apache2 httpd.conf 中文版
2006/12/06 PHP
php过滤XSS攻击的函数
2013/11/12 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
php array_map()函数实例用法
2021/03/03 PHP
基于jQuery的获取标签名的代码
2012/07/16 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
js的回调函数详解
2015/01/05 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
Python内置数据类型详解
2014/08/18 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
python实现两个文件合并功能
2018/04/01 Python
Python面向对象类的继承实例详解
2018/06/27 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
python生成word合同的实例方法
2021/01/12 Python
小学生新年寄语
2014/04/03 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
精神病医院见习报告
2014/11/03 职场文书