From: http://www.vpsee.com/2009/09/debug-python-programwith-pdb/

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

$ vi d.py
#!/usr/bin/pythondef main():i, sum = 1, 0for i in xrange(100):sum = sum + iprint sumif __name__ == '__main__':main()$ python -m pdb d.py

运行上面的命令后进入以下界面,可以输入类似 gdb 的命令来改变程序的执行流程:

$ python -m pdb 1.py
> d.py(3)()
-> def main():
(Pdb)

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

(Pdb) list1      #!/usr/bin/python23  ->  def main():4        i, sum = 1, 05         for i in xrange(100):6              sum = sum + i7        print sum89     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) list1   #!/usr/bin/python23     def main():4        i, sum = 1, 05  ->      for i in xrange(100):6 B            sum = sum + i7        print sum89     if __name__ == '__main__':10        main()
[EOF]

如果想在函数处设置断点:

(Pdb) break d.main
d.py:3(Pdb) list1   #!/usr/bin/python23 B   def main():4  ->     i, sum = 1, 05         for i in xrange(100):6              sum = sum + i7        print sum89     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 pdbdef main():i, sum = 1, 0for i in xrange(100):sum = sum + ipdb.set_trace()print sumif __name__ == '__main__':main()

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

$ ./d.py
> d.py(9)main()
-> print sum
(Pdb)

总结

命令 用途
break 或 b 设置断点
continue 或 c 继续执行程序
list 或 l 查看当前行的代码段
step 或 s 进入函数
return 或 r 执行代码直到从当前函数返回
exit 或 q 中止并退出
next 或 n 执行下一行
pp 打印变量的值
help 帮助

简单调试 Python 程序相关推荐

  1. 简述python调试程序_简单调试 Python 程序

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

  2. Linux下使用终端调试Python程序:pudb

    根据官网的介绍:PythonDebuggingTools - Python Wiki Python自带调试程序pdb,pdb有点像gdb,强大,但不够好用. 根据别人的推荐:Suggestions f ...

  3. python程序代码大全-调试Python程序代码的几种方法总结

    程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...

  4. 使用pdb调试Python程序

    From: http://blog.csdn.net/magicbreaker/article/details/3754733 本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程 ...

  5. python运行不了程序代码_Python源码分析2 - 一个简单的Python程序的执行

    本文主要通过跟踪一个非常简单的Python程序的执行,简单讨论Python实现的基本框架和结构. 要执行Python程序如下,功能非常简单:从1加到10再打印出来 # test program sum ...

  6. python用一行代码编写一个回声程序_Python源码分析2 - 一个简单的Python程序的执行...

    本文主要通过跟踪一个非常简单的Python程序的执行,简单讨论Python实现的基本框架和结构. 要执行Python程序如下,功能非常简单:从1加到10再打印出来 # test program sum ...

  7. python程序-调试Python程序代码的几种方法总结

    程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...

  8. spyderpython使用教程_使用spyder3调试python程序的简明教程

    说是简明教程,其实是我自己尝试用spyder调试python程序的过程的一个记录,因为spyder的调试功能是基于pdb,而我又没有pdb的基础,所以刚开始上手时感觉很不习惯,而且那时我又很懒,没去找 ...

  9. python如何调试_调试python 程序的几种方法总结

    程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...

最新文章

  1. linux 更改服务的启动顺序
  2. hybrid开发调试记录
  3. 局域网聊天工具的设计与实现 java设计代写代做代码源代码
  4. 【转载】C#中List集合使用Contains方法判断是否包含某个对象
  5. Linux命令【五】系统函数
  6. php淘客发单_如何使用PHP的curl函数调用维易淘客接口
  7. WAV文件的二进制格式解析
  8. 浅谈的数据库设计原则-之账户体系的分析
  9. Qt 使用阿里图标库
  10. java多线程编程详细入门教程
  11. 制动计算机,一种基于摩擦制动的计算机主机底座
  12. SpringBoot单元测试保姆级教程,文末介绍Postman的基本使用
  13. c语言 英文歌曲大赛,英文歌曲大赛活动方案
  14. PC端网页布局——世纪佳缘(四)注册登录
  15. Android 复制 粘贴 剪贴板的使用 ClipboardManager
  16. crontab 问号_Spring - Quartz - cronExpression中问号(?)的解释
  17. 产品线架构设计的基本步骤
  18. CS224n研究热点8 谷歌的多语种神经网络翻译系统
  19. 服务器摆放需要预留U位么_办公沙发摆放有何讲究?
  20. 04、switch-case分支结构、循环结构

热门文章

  1. 安装ARM交叉编译工具
  2. 数据多重共线性_多重共线性对您的数据科学项目的影响比您所知道的要多
  3. leetcode5. 最长回文子串(动态规划)
  4. leetcode816. 模糊坐标
  5. chrome扩展程序_如何创建Chrome扩展程序
  6. 如何使用json开发web_如何通过使用JSON Web令牌简化应用程序的身份验证
  7. 深度学习去燥学习编码_我们问了15,000个人,他们是谁,以及他们如何学习编码
  8. 前馈神经网络中的前馈_前馈神经网络在基于趋势的交易中的有效性(1)
  9. 详尽kmp_详尽的分步指南,用于数据准备
  10. Powershell-创建Module