python断点调试_「Python调试器」,快速定位各种疑难杂症!!!
在很多的编辑器其实都带着「调试程序」的功能,比如写 c/c++ 的 codeblocks,写 Python 的 pycharm,这种图形界面的使用和显示都相当友好,简单方便易学,这个不是我这篇文章要讲的重点。今天主要是想给大家介绍一下 「 Python调试器 」,快速定位各种疑难杂症。
Python 调试器
这一部分主要就是想说两个 Python 调试器,分别是标准库自带的 pdb 和开源的 ipdb。
pdb
pdb 是 Python 自带的库,为 Python 提供了一种交互式的源码调试功能,包含当前调试器应有的功能,包括设置断点、单步调试、查看源码等。其实如果你之前学过 c/c++ 的话,你可能知道 gdb 这个命令行调试工具,如果你之前用过 gdb,那么恭喜你你可以直接用 pdb 了,因为这哥俩一个用法。如果你不知道 gdb 也没事,我们先来看一下 pdb 的部分调试命令:
这里有两种不同的方法来启动 Python 调试器,两种方法适用于不同的场景。一种是直接在命令行参数指定使用 pdb 模块启动 Python 文件, 这种适合于代码文件较短的情况 ,将在代码的第一行启动 Python 调试器。具体如下所示(例如文件名是 test.py):
python -m pdb test.py
另一种是在 Python 代码中调用 pdb 模块的 set_trace 方法设置一个断点,当程序运行到此断点的时候,程序将会暂停执行并且打开 pdb 调试器,这种适合于代码文件较大的情况。具体如下所示:
import pdbdef get_sum(n):cnt = 0for i in range(n):pdb.set_trace()cnt += iprint(cnt)if __name__ == '__main__':get_sum(5)
启动 Python 调试器以后就可以使用上面截图中的调试命令进行程序的调试。比如在接下来的操作中,我们先使用 list 来查看我们的代码,然后使用 p 打印变量当前的取值,最后用 n 执行下一行 Python 代码:
ipdb
ipdb 是一个开源的 Python 调试器,其实它和 pdb 的接口是一样的。那既然一样的接口,那为啥还要设计个 ipdb 呢?黑格尔曾经说过「存在即合理」,ipdb 相比于 pdb 多了语法高亮,tab 自动补全等友好功能,在易用性方面做了很大的改进,这个感觉就和 Python 和 IPython 一样。
当然,ipdb 作为一个第三方库,在使用之前必然要先安装:
pip install ipdb
我们修改一下之前例子中的 test.py 文件,修改之后的代码如下:
import ipdbdef get_sum(n):cnt = 0for i in range(n):ipdb.set_trace()cnt += iprint(cnt)if __name__ == '__main__':get_sum(5)
具体的操作还是和上面的 pdb 的操作一样:
python断点调试_「Python调试器」,快速定位各种疑难杂症!!!相关推荐
- python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15)...
原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15) adb(Androi ...
- python列表框_「每日一练」Python列表框部件的运用
原标题:「每日一练」Python列表框部件的运用 用Python就一定要用到界面操作,有一个好的用户界面,才会有好的用户体验,下边就开始创建我们的主窗口,并设置相应的列表框部件吧! 案例 创建主窗口, ...
- python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...
原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17) Appium是一个开 ...
- python生成器单线程_「Python异步编程-3」协程、生成器、yield 的联系
异步编程的基础在于理解协程,而协程的基础在于理解生成器,而生成器的基础在于理解yield关键字,下面就来说说这几个概念. 什么是yield关键字? 相当于return关键字,在每次next(),或者f ...
- python 查看当前目录_「Python」打包分发工具setuptools学习
❝ setuptools是python标准的打包分发工具,它可以将我们编写的python项目打包安装,这样其他同事就可以像调用标准库或python第三方库那样直接使用:也可以将项目上传到Pypi供更多 ...
- python开发闹钟_「玩转树莓派」为女朋友打造一款智能语音闹钟
前言 最近在做智慧工厂相关的工作,多多少少了解了一点物联网相关的技术.于是心血来潮,寻思自己可以做点什么,恰巧之前听说过一些树莓派的传闻,于是就有了这么一款闹钟. 需要说明的是,在看这篇文章之前,你至 ...
- python pow和**_「Python学习笔记」Python函数高级应用
Python, 函数本身也是一个对象函数既可以赋值,也可以用作其他函数的参数,还可作为其他函数的返回值. 使用函数变量 Python的函数也是一种值:所有函数都是function对象,这意味着可以把函 ...
- python docker实战_「docker实战篇」python的docker-docker镜像的创建使用dockerfile(3
从上篇docker commit学习可以了解到,镜像的定制其实每一层添加的配置和文件,如果把每一层的修改配置,修改文件,都写入脚本,用这个脚本构建定制镜像,无法重复的问题,镜像构建透明性的问题,体积的 ...
- python做工控机_「上位机软件」工控机上位机软件的开发历程(一) - seo实验室...
上位机软件 本人就职于一家环境监测公司,上位机软件的主要功能是采集各仪器的数据,然后存储起来,并传送到环保局平台. 刚到公司的时候,公司使用的是组态软件(用以显示流程图),然后再开发了报表软件.数据上 ...
最新文章
- springmvc中的类型转换器
- 从三角不等式到Margin Softmax
- iOS之深入解析事件传递的响应链
- 【Qt开发】QTableWidget设置根据内容调整列宽和行高
- xss漏洞php注射实战,利用XSS渗透DISCUZ 6.1.0实战
- mysql 插入优化_MySQL批量SQL插入性能优化
- 【SpringCloud】服务降级 Hystrix DashBoard
- android配置多个url,Retrofit中使用多个baseUrl
- AngularJs + angular-ui-router + bootstrap 实现blog基础导航功能
- 灭屏取消过温减流功能
- Excel VBA 删除 表格中的图片
- fgo最新服务器,如何看fgo是什么服务器 | 手游网游页游攻略大全
- Spectre V1理论与实践
- oel+oracle,OEL7.6安装Oracle Database 19C(VERSION 19.3.0.0)
- 51单片机(十六)—— 定时器0和定时器1寄存器介绍及功能描述
- 当你准备自定义view的时候
- js 监听键盘的enter键
- 用C语言构造康托集,洛谷——P1014 Cantor表
- 中国通信服务股份有限公司之广通服的划分!
- 蓝桥杯复数运算python
热门文章
- 【Xmail】使用Xmail搭建局域网邮件服务器
- 行内元素与块级元素,以及区别
- 精通 ASP.NET MVC 4 学习笔记(一)
- ckedit 3.0 配置(一)
- interface abstract与virtual
- 理解transformer
- 网件rax40可以刷梅林_美国网件发布全系列Wi-Fi6家用无线路由器,部署未来家用产品市场...
- C语言#define宏定义可能注意不到的地方
- 伺服怎么接单相220伏_乐利网带你认识伺服电机及工作原理
- 表单内如何直接贴图而不用上传图片_表单如何添加图片?