首页 > 编程语言 >python中debug的几种方法对比

python中debug的几种方法对比

时间:2023-02-24 09:14:36浏览次数:52  
标签:python 代码 几种 单步 debug 断点 调试

python中debug的几种方法对比

1.断点+单步调试

  • 断点+单步调试是目前应用最广的debug方法
  • 流程为:
    • 在关键的代码位置加上print语句,通过分析print的值将范围缩小,这个过程可能需要重复多次。将范围缩小到一个比较完整的功能模块中
    • 在可能出现bug的模块中的关键部分打上断点,进入到断点后使用单步调试,查看各变量的值是否正确,最后根据错误的变量值定位到具体的代码行,最后进行修改

2.pdb调试

  • pdb是python自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb的调试流程和断点+单步调试基本差不多

3. PySnooper

  • 该工具使用采用装饰器的形式,将函数的运行过程以日志的形式打印到文件中,其记录了运行了哪些代码行,运行的时间及运行到当前代码时各变量的值。根据变量的变化就可以定位问题了。亲自试用该工具后,其优点可总结为以下几点:

优缺点

优点 缺点
PySnooper 无需为了查看变量的值,使用print打印变量的值,从而修改了原有的代码 无法很好的支持递归调用
接口的运行过程以日志的形式保存,方便随时查看 调用每个函数的中间结果只能保存在一个文件中,如果需要区分不同文件的结果,需要使用prefix来进行前缀标识
可以根据需要,设置函数调用的函数的层数,方便将注意力集中在需要重点关注的代码段 对于跨文件函数调用,不支持记录调用函数所在的文件名
多个函数的日志,可以设置日志前缀表示进行标识,方便查看时过滤
pdb 需要在代码中添加print语句,这就改变了原有的代码
在断点调试和单步调试过程中,需要保持持续的专注,一旦跳过了关键点就要从头开始

参考于:https://mp.weixin.qq.com/s/uCvcuAlkUaKIEbV4jU1F2Q

标签:python,代码,几种,单步,debug,断点,调试
From: https://www.cnblogs.com/yangzilaing/p/17150110.html

相关文章

  • Python:Excel自动化实践入门篇 甲【留言点赞领图书门票】
    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s?__biz=MzUxMTgxMzExNQ==&mid=2247485524&idx=1&sn=7af7790002e0e60......
  • python 每天一个知识点 对文件的操作
    对文件的操作:操作功能文件对象=open(file,mode,encoding)打开文件获取文件对象文件对象.read(num)读取指定长度字节,不指定num读取文件全部文件对象.re......
  • 斐波那契数python实现迭代循环两种方法
    #递归方法deffibona(n):ifn==0:return0elifn==1:return1else:returnfibona(n-1)+fibona(n-2)#结果验证pri......
  • Python中用PyTorch机器学习神经网络分类预测银行客户流失模型|附代码数据
    阅读全文:http://tecdat.cn/?p=8522最近我们被客户要求撰写关于神经网络的研究报告,包括一些图形和统计输出。分类问题属于机器学习问题的类别,其中给定一组特征,任务是预测......
  • Python实现素数筛选(欧式筛法)
    素数筛选之欧式筛法:用合数与素数乘法,素数与素数的乘法去筛将来的数,同时当这个数被更小的素数整除,就不必再用这个数去运算,保证每个合数只会被它的最小质因数筛去,因此每个数只......
  • Python中的魔术方法大全
    魔术方法一种特殊的方法而已特点不需要人工调用,在特定时刻自动触发执行魔术方法种类1.__init__初始化方法*******触发时机:实例化对象之后触发作用:为对象添加对象的所......
  • Python 异步: 等待任务集合(11)
    我们可以通过asyncio.wait()函数等待异步任务完成。可以等待不同的条件,例如所有任务完成、第一个任务完成以及第一个任务因异常而失败。让我们仔细看看。1.什么是asy......
  • python爬虫学习——bs4
    bs4将一个复杂的html文档转化为一个复杂的树形结构,每个节点都是python对象,所有对象可以分为四种:Tag、NavigableString、BeautifulSoup、Commentfrombs4importBeautifu......
  • python numpy 中的冒号
    python中冒号实际上有两个意思:1.全部选择matrix1[1,:]表示matrix的第1行的所有元素matrix1[:,1]表示matrix的第1列的所有元素2.表示区间,含左不含右matrix1[1,0:......
  • python 异常处理
    异常异常处理是一种艺术,一旦你掌握,会授予你无穷的力量。我将要向你展示我们能处理异常的一些方式。最基本的术语里我们知道了try/except从句。可能触发异常产生的代码会......