在很多的编辑器其实都带着「调试程序」的功能,比如写 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调试器」,快速定位各种疑难杂症!!!相关推荐

  1. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15) adb(Androi ...

  2. python列表框_「每日一练」Python列表框部件的运用

    原标题:「每日一练」Python列表框部件的运用 用Python就一定要用到界面操作,有一个好的用户界面,才会有好的用户体验,下边就开始创建我们的主窗口,并设置相应的列表框部件吧! 案例 创建主窗口, ...

  3. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17) Appium是一个开 ...

  4. python生成器单线程_「Python异步编程-3」协程、生成器、yield 的联系

    异步编程的基础在于理解协程,而协程的基础在于理解生成器,而生成器的基础在于理解yield关键字,下面就来说说这几个概念. 什么是yield关键字? 相当于return关键字,在每次next(),或者f ...

  5. python 查看当前目录_「Python」打包分发工具setuptools学习

    ❝ setuptools是python标准的打包分发工具,它可以将我们编写的python项目打包安装,这样其他同事就可以像调用标准库或python第三方库那样直接使用:也可以将项目上传到Pypi供更多 ...

  6. python开发闹钟_「玩转树莓派」为女朋友打造一款智能语音闹钟

    前言 最近在做智慧工厂相关的工作,多多少少了解了一点物联网相关的技术.于是心血来潮,寻思自己可以做点什么,恰巧之前听说过一些树莓派的传闻,于是就有了这么一款闹钟. 需要说明的是,在看这篇文章之前,你至 ...

  7. python pow和**_「Python学习笔记」Python函数高级应用

    Python, 函数本身也是一个对象函数既可以赋值,也可以用作其他函数的参数,还可作为其他函数的返回值. 使用函数变量 Python的函数也是一种值:所有函数都是function对象,这意味着可以把函 ...

  8. python docker实战_「docker实战篇」python的docker-docker镜像的创建使用dockerfile(3

    从上篇docker commit学习可以了解到,镜像的定制其实每一层添加的配置和文件,如果把每一层的修改配置,修改文件,都写入脚本,用这个脚本构建定制镜像,无法重复的问题,镜像构建透明性的问题,体积的 ...

  9. python做工控机_「上位机软件」工控机上位机软件的开发历程(一) - seo实验室...

    上位机软件 本人就职于一家环境监测公司,上位机软件的主要功能是采集各仪器的数据,然后存储起来,并传送到环保局平台. 刚到公司的时候,公司使用的是组态软件(用以显示流程图),然后再开发了报表软件.数据上 ...

最新文章

  1. springmvc中的类型转换器
  2. 从三角不等式到Margin Softmax
  3. iOS之深入解析事件传递的响应链
  4. 【Qt开发】QTableWidget设置根据内容调整列宽和行高
  5. xss漏洞php注射实战,利用XSS渗透DISCUZ 6.1.0实战
  6. mysql 插入优化_MySQL批量SQL插入性能优化
  7. 【SpringCloud】服务降级 Hystrix DashBoard
  8. android配置多个url,Retrofit中使用多个baseUrl
  9. AngularJs + angular-ui-router + bootstrap 实现blog基础导航功能
  10. 灭屏取消过温减流功能
  11. Excel VBA 删除 表格中的图片
  12. fgo最新服务器,如何看fgo是什么服务器 | 手游网游页游攻略大全
  13. Spectre V1理论与实践
  14. oel+oracle,OEL7.6安装Oracle Database 19C(VERSION 19.3.0.0)
  15. 51单片机(十六)—— 定时器0和定时器1寄存器介绍及功能描述
  16. 当你准备自定义view的时候
  17. js 监听键盘的enter键
  18. 用C语言构造康托集,洛谷——P1014 Cantor表
  19. 中国通信服务股份有限公司之广通服的划分!
  20. 蓝桥杯复数运算python

热门文章

  1. 【Xmail】使用Xmail搭建局域网邮件服务器
  2. 行内元素与块级元素,以及区别
  3. 精通 ASP.NET MVC 4 学习笔记(一)
  4. ckedit 3.0 配置(一)
  5. interface abstract与virtual
  6. 理解transformer
  7. 网件rax40可以刷梅林_美国网件发布全系列Wi-Fi6家用无线路由器,部署未来家用产品市场...
  8. C语言#define宏定义可能注意不到的地方
  9. 伺服怎么接单相220伏_乐利网带你认识伺服电机及工作原理
  10. 表单内如何直接贴图而不用上传图片_表单如何添加图片?