简单调试 Python 程序
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 程序相关推荐
- 简述python调试程序_简单调试 Python 程序
在 Python 中也可以像 gcc/gdb 那样调试程序,只要在运行 Python 程序时引入 pdb 模块(假设要调试的程序名为 d.py): $ vi d.py #!/usr/bin/pytho ...
- Linux下使用终端调试Python程序:pudb
根据官网的介绍:PythonDebuggingTools - Python Wiki Python自带调试程序pdb,pdb有点像gdb,强大,但不够好用. 根据别人的推荐:Suggestions f ...
- python程序代码大全-调试Python程序代码的几种方法总结
程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...
- 使用pdb调试Python程序
From: http://blog.csdn.net/magicbreaker/article/details/3754733 本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程 ...
- python运行不了程序代码_Python源码分析2 - 一个简单的Python程序的执行
本文主要通过跟踪一个非常简单的Python程序的执行,简单讨论Python实现的基本框架和结构. 要执行Python程序如下,功能非常简单:从1加到10再打印出来 # test program sum ...
- python用一行代码编写一个回声程序_Python源码分析2 - 一个简单的Python程序的执行...
本文主要通过跟踪一个非常简单的Python程序的执行,简单讨论Python实现的基本框架和结构. 要执行Python程序如下,功能非常简单:从1加到10再打印出来 # test program sum ...
- python程序-调试Python程序代码的几种方法总结
程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...
- spyderpython使用教程_使用spyder3调试python程序的简明教程
说是简明教程,其实是我自己尝试用spyder调试python程序的过程的一个记录,因为spyder的调试功能是基于pdb,而我又没有pdb的基础,所以刚开始上手时感觉很不习惯,而且那时我又很懒,没去找 ...
- python如何调试_调试python 程序的几种方法总结
程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...
最新文章
- linux 更改服务的启动顺序
- hybrid开发调试记录
- 局域网聊天工具的设计与实现 java设计代写代做代码源代码
- 【转载】C#中List集合使用Contains方法判断是否包含某个对象
- Linux命令【五】系统函数
- php淘客发单_如何使用PHP的curl函数调用维易淘客接口
- WAV文件的二进制格式解析
- 浅谈的数据库设计原则-之账户体系的分析
- Qt 使用阿里图标库
- java多线程编程详细入门教程
- 制动计算机,一种基于摩擦制动的计算机主机底座
- SpringBoot单元测试保姆级教程,文末介绍Postman的基本使用
- c语言 英文歌曲大赛,英文歌曲大赛活动方案
- PC端网页布局——世纪佳缘(四)注册登录
- Android 复制 粘贴 剪贴板的使用 ClipboardManager
- crontab 问号_Spring - Quartz - cronExpression中问号(?)的解释
- 产品线架构设计的基本步骤
- CS224n研究热点8 谷歌的多语种神经网络翻译系统
- 服务器摆放需要预留U位么_办公沙发摆放有何讲究?
- 04、switch-case分支结构、循环结构
热门文章
- 安装ARM交叉编译工具
- 数据多重共线性_多重共线性对您的数据科学项目的影响比您所知道的要多
- leetcode5. 最长回文子串(动态规划)
- leetcode816. 模糊坐标
- chrome扩展程序_如何创建Chrome扩展程序
- 如何使用json开发web_如何通过使用JSON Web令牌简化应用程序的身份验证
- 深度学习去燥学习编码_我们问了15,000个人,他们是谁,以及他们如何学习编码
- 前馈神经网络中的前馈_前馈神经网络在基于趋势的交易中的有效性(1)
- 详尽kmp_详尽的分步指南,用于数据准备
- Powershell-创建Module