使用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信息抽取之乱码解决办法
Jun 29 Python
python+django+sql学生信息管理后台开发
Jan 11 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
Jun 28 Python
Django实现文件上传下载功能
Oct 06 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
Python语言异常处理测试过程解析
Jan 08 Python
python推导式的使用方法实例
Feb 28 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 Python
pytorch 一行代码查看网络参数总量的实现
May 12 Python
你喜欢篮球吗?Python实现篮球游戏
Jun 11 Python
分析Python list操作为什么会错误
Nov 17 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
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
PHP实现的函数重载功能示例
2018/08/03 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
对于Python装饰器使用的一些建议
2015/06/03 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
Keras设置以及获取权重的实现
2020/06/19 Python
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
高级销售员求职信
2013/10/25 职场文书
大学生实习感言
2014/01/16 职场文书
交通事故检查书范文
2014/01/30 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
企业文明单位申报材料
2014/05/16 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
Python实现抖音热搜定时爬取功能
2022/03/16 Python