简述python调试程序_简单调试 Python 程序
在 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 Bsum = 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 Bdef 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)
总结
命令
用途
break 或 b
设置断点
continue 或 c
继续执行程序
list 或 l
查看当前行的代码段
step 或 s
进入函数
return 或 r
执行代码直到从当前函数返回
exit 或 q
中止并退出
next 或 n
执行下一行
pp
打印变量的值
help
帮助
简述python调试程序_简单调试 Python 程序相关推荐
- python搭建_简单_交易系统【转载】
python搭建_简单_交易系统[转载] 构建account_class 类 构建所需函数 构建最大回撤.收益率.回测函数 构建银行翻倍.选股函数 回测实证分析 (转自 https://www.joi ...
- python协同过滤调用包_简单的python协同过滤程序实例代码
本文研究的主要是python协同过滤程序的相关内容,具体介绍如下. 关于协同过滤的一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那么通常的做法就是问问周围的朋友,看看 ...
- 调试内存_如何调试Python 程序的内存泄露问题
IT服务圈儿 有温度.有态度的IT自媒体平台 本文经公众号:未闻Code(ID:itskingname) 授权转载 如需二次转载请联系出处 如果大家在 Linux 或者 macOS 下面运行一段可能导 ...
- python编写接口自动化脚本_简单的python http接口自动化脚本
摘抄:今天给大家分享一个简单的python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值 ...
- python写小程序-用python写个简单的小程序,编译成exe跑在win10上
每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...
- linux可以生成pdb调试信息吗,Linux通过使用pdb简单调试python计划
python自带的调试工具库:pdb # -*- coding:utf-8 -*- def func(num): s = num * 10 return s if __name__ == '__mai ...
- python对象模型_[译] 用 Python 实现一个最简单的对象模型
一个简单的对象模型 Carl Friedrich Bolz 是一位在伦敦国王大学任职的研究员,他沉迷于动态语言的实现及优化等领域而不可自拔.他是 PyPy/RPython 的核心开发者之一,于此同时, ...
- python书籍_最好的Python书籍,让您像专业程序员一样编程
Python是一种值得学习的语言.学习Python不仅会激发你用最简单的方式完成高度复杂的任务,还会打破传统编程范型的藩篱.Python是能够改变你的编程方式进而改变你看问题的角度的一种语言. Pyt ...
- 微信 小程序 python 渲染_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...
本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版,进阶学习文末加群! 随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序. ...
最新文章
- java线程同步以及对象锁和类锁解析(多线程synchronized关键字)
- 华为FusionSphere概述——计算资源、存储资源、网络资源的虚拟化,同时对这些虚拟资源进行集中调度和管理...
- c++几种智能指针比较
- Android Stdio换源以及配置项目
- 【2016年第4期】大数据应用系统的消息驱动架构
- pythonbool类型数组生成_对numpy中布尔型数组的处理方法详解
- ue4cmd怎么调用_虚幻引擎UE4-命令行使用的一些详细技巧
- 微信收款语音播报android,电脑微信收款语音播报软件下载
- Markdown常用样式
- 100多个经典常用的jQuery插件大全实例演示和下载
- 荣耀magicbookpro升级鸿蒙,荣耀MagicBook Pro 2020到底好不好?答案就在这里
- MIT 6.828 Lab1(从引导扇区开始)
- NYOJ - 找点【贪心】
- 【资源分享】Echarts中国地图、世界地图JSON数据(包括省市、经纬度、世界地图国家名称中英对照)
- 微信公众号开发(4)-实现PC扫码登录
- Goldengate辅助数据库进行升级
- VB Treeview控件 介绍与使用
- Ros 与 STM32 之Ros串口同设备USB固定
- CAS-自定义CAS Server端登录页面
- 爬取高德地图全国poi的爬虫
热门文章
- 数据库分类与四大类NoSQL数据库
- 用 scipy.weave 嵌入 C 语言
- 财务有必要学python吗-8年老财务:财务分析学python就能提高效率?一半人是骗子...
- python入门视频教程-Python入门视频全套教程
- 零基础学python图文版-零基础学Minecraft编程(图文版)中文pdf_Python教程
- 免费python课程排行榜-Python培训机构排行榜哪家更好?老男孩Python全栈开发
- python怎么使用-如何使用 Python 开始建立
- python新手小项目实例-有没有简单一点的 Python 小例子或小项目?
- 语音识别哪家强?百度 、苹果、科大讯飞都有制胜法宝
- elementUI 学习入门之 Button 按钮