PySnooper:非常好用的python代码调试帮助工具!

再也不用Print函数调试啦--神级Python代码调试工具PySnooper的介绍和使用 PySnooper PySnooper是一款适合菜鸟用的代码调试工具。 如果Python代码哪儿输出不对劲了,之前一般都是利用print函数结合pdb.setTrace()来找问题,如果使用pysnooper的话,那事情就变得简单了! 你可以通过使用这个工具,清楚的看见每一行代码的执行结果以及所有的局部变量的值。只要在函数上添加一个装饰行(类似于装饰器的使用),就可以打印出该函数每一行执行的结果,... 阅读详情

       PySnooper是一个给平民用的调试器,因为它是完全免费的!使用pysnooper可以完整的输出函数每一行代码中的变量的值,供我们去观察。github网址:PySnooper - Never use print for debugging again

1.示例

       下面这个函数的功能是,通过返回一个位列表将数字转换为二进制。 然后通过添加@pysnooper.snoop() 装饰器来追踪它的每一行的变量的值:

import pysnooper

@pysnooper.snoop()
def number_to_bits(number):
    if number:
        bits = []
        while number:
            number, remainder = divmod(number, 2)
            bits.insert(0, remainder)
        return bits
    else:
        return [0]

number_to_bits(6)

stderr的输出是:

Starting var:.. number = 6
15:29:11.327032 call         4 def number_to_bits(number):
15:29:11.327032 line         5     if number:
15:29:11.327032 line         6         bits = []
New var:....... bits = []
15:29:11.327032 line         7         while number:
15:29:11.327032 line         8             number, remainder = divmod(number, 2)
New var:....... remainder = 0
Modified var:.. number = 3
15:29:11.327032 line         9             bits.insert(0, remainder)
Modified var:.. bits = [0]
15:29:11.327032 line         7         while number:
15:29:11.327032 line         8             number, remainder = divmod(number, 2)
Modified var:.. number = 1
Modified var:.. remainder = 1
15:29:11.327032 line         9             bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
15:29:11.327032 line         7         while number:
15:29:11.327032 line         8             number, remainder = divmod(number, 2)
Modified var:.. number = 0
15:29:11.327032 line         9             bits.insert(0, remainder)
Modified var:.. bits = [1, 1, 0]
15:29:11.327032 line         7         while number:
15:29:11.327032 line        10         return bits
15:29:11.327032 return      10         return bits
Return value:.. [1, 1, 0]

2.指定输出内容:

如果不想跟踪整个函数,可以将自己想要跟踪的内容编写在with块中,如下所示,输出lst列表中的最大值、最小值和中间值:

import pysnooper
import random

def foo():
    lst = []
    for i in range(10):
        lst.append(random.randrange(1, 1000))

    with pysnooper.snoop():
        lower = min(lst)
        upper = max(lst)
        mid = (lower + upper) / 2
        print(lower, mid, upper)

foo()

输出如下:

New var:....... lst = [871, 383, 481, 214, 863, 362, 405, 452, 36, 325]
New var:....... i = 9
New var:....... lst = [681, 267, 74, 832, 284, 678, ...]
09:37:35.881721 line        10         lower = min(lst)
New var:....... lower = 74
09:37:35.882137 line        11         upper = max(lst)
New var:....... upper = 832
09:37:35.882304 line        12         mid = (lower + upper) / 2
74 453.0 832
New var:....... mid = 453.0
09:37:35.882486 line        13         print(lower, mid, upper)
36 453.5 871

3.如果跟踪内容太长,可以将其输出到本地日志文件中

@pysnooper.snoop('/path/to/logfile/file.log')

4.查看一些非局部变量的表达式的值

@pysnooper.snoop(watch=('foo.bar', 'self.x["whatever"]'))

或者查看非局部变量的所有属性列表:

@pysnooper.snoop(watch_explode=('foo', 'self'))

5.跟踪函数中调用的函数

使用depth来设置跟踪的函数调用深度:

@pysnooper.snoop(depth=2)

6.设置一个前缀名,将更容易定位和找到snoop行

@pysnooper.snoop(prefix='ZZZ ')

7.在多线程应用程序上识别哪个线程在输出中被跟踪

@pysnooper.snoop(thread_info=True)

这一项没看懂,有懂的大神,帮忙留言解释一下!

 

python中神级调试工具pysnooper库的详细使用 pysnooper 是一个轻量级的 Python 调试工具,它可以帮助你跟踪代码的执行过程,输出变量的值、函数调用等信息。与传统的调试器(如 pdb)相比,pysnooper 更加简单易用,特别适合快速定位问题。 阅读详情

相关推荐

python调试工具

python调试工具python调试工具python调试工具python调试工具python调试工具python调试工具python调试工具python调试工具

python pysnooper使用

pysnooper pysnooper下载 pip install pysnooper -i https://mirrors.ustc.edu.cn/pypi/web/simple/ import pysnooper 跟踪整个函数 @pysnooper.snoop() 跟踪相关部分 def … … with pysnooper.snoop(): XXX 1.将输出重定向到文件 @pysnooper.snoop(“simple_test.log”) 2.跟踪全局变量 @pysnooper.snoop(watc

weixin_45124380的博客 278

python调试神器PySnooper的使用

主要介绍了python调试神器PySnooper的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

pysnooper的使用

pysnooper的基本使用 pysnooper主要是使用装饰器的形式进行函数的处理; ''' When you decorate a function with `@pysnooper.snoop()` or wrap a block of code in `with pysnooper.snoop():`, you'll get a log of every...

weixin_44313745的博客 812

SigFit实战:从FEA到光学仿真的热力耦合分析全流程解析

在光机系统与芯片封装等精密工程领域,热与力的耦合效应是影响产品性能与可靠性的核心物理问题。有限元分析(FEA)是预测结构在热、力载荷下变形与应力的基础工具,但其结果通常无法直接用于评估光学性能。这需要一座桥梁,将物理场数据转化为光学设计语言。其核心原理在于数据映射与面形表征技术,例如通过泽尼克多项式拟合,将离散的节点位移分解为离焦、像散等标准光学像差。这项技术的工程价值在于,它实现了多物理场仿真的闭环,使工程师能在设计阶段精准预测热变形或应力对波前误差、调制传递函数等关键光学指标的影响。其典型应用场景包括高

weixin_28630185的博客 340

RS-485调试踩坑实录:MAX13487数据回环问题排查与修复(附电路图)

本文深入解析了RS-485通信中MAX13487芯片的数据回环问题,提供了详细的排查过程和解决方案。通过分析芯片特性和自动换向机制,揭示了RO引脚配置不当是导致问题的关键原因,并给出硬件(添加上拉电阻)和软件(调整MCU配置)两种修复方案,附有优化设计建议和实际调试技巧。

play7的博客 1297

求你了,别再用 print 调试代码了

关注上方“高级农民工”,选择星标,关键时间,第一时间送达!☞19.9元获得我的Python爬虫与数据分析课程对于每个程序开发者来说,调试几乎是必备技能。代码写到一半卡住了,不知道这个函...

苏克的博客 570

【WSL2+Ubuntu+Docker Desktop】迁移到D盘

该篇文章包含将WSL2+ubuntu+Docker Desktop从C盘迁移到D盘

哈茶的博客 3930

python调试工具pysnooper用法_python调试神器PySnooper的使用

相信很多小伙伴平时写python的时候都是需要调试程序的,出问题了,需要了解函数内部是怎么跑的,而这个时候很多人都会想到在疑惑的地方使用print函数来打印一下参数来调试。虽然用print也是不失为是一种方法,但是有时如果疑惑的地方多就要每个地方都要加print,这样就显得比较麻烦了。今天发现在Github开源了一个神器,可以清楚让你清楚了解函数内部的运行以及参数值的变化,PySnooper,项目...

weixin_34439193的博客 290

RK3588 C-PHY摄像头驱动升级踩坑记:从‘Only CSI2 supported’报错到成功取流

本文详细记录了在RK3588平台上调试C-PHY摄像头驱动的全过程,从‘Only CSI2 supported’报错分析到成功取流。内容涵盖C-PHY与CSI-2协议差异、SDK版本对比、V4L2框架下的bus-type解析机制,以及硬件排查与寄存器调优实战经验,为嵌入式Camera驱动工程师提供宝贵参考。

weixin_42522374的博客 124

家庭网络中,路由器和交换机的连接顺序

它的目的是给路由器增加端口,用户访问互联网的速度比情况一要快,常用于办公网络、家庭成员多的场景。光纤入户首先连接的肯定是光猫,而在光猫的后面,是先连接交换机?还是应该接路由器呢?家庭网络中路由器和交换机的先后连接顺序。它目的是让更多的用户访问互联网。常用于一些超大型机房、网吧等。至于路由器和交换机的区别。两者之间很多功能都有兼容。但用户上网速度相对较慢。在技术日益迭代的今天。

m0_74075744的博客 1万+

PySnooper 一款用于Python的好用的Debug库

介绍: PySnooper是一款开源的python用的Debug工具,帮助那些还停留在利用print来调试信息的开发者提高Debug效率。 安装方法: pip install pysnooper 使用例子: 直接在想调试的函数前添加@pysnooper.snoop()装饰器 import pysnooper @pysnooper.snoop() def number_to_bits(num...

Rh's blog 650

补丁1.0:使用Eviews做ADF检验

补丁1.0:使用Eviews做ADF检验

Jet4505的博客 1961

Python调试神器:PySnooper详细使用指南!

△点击上方“Python猫”关注 ,回复“1”领取电子书剧照:鹿鼎记作者:写代码的明哥来源:Python编程时光对于每个程序开发者来说,调试几乎是必备技能。代码写到一半卡住了,不知道这...

Python猫 7528

基于PChmi.dll的PLC报警显示和记录(C#)

本文介绍了如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。通过订阅PLC的报警事件,我们可以实时显示报警信息,并通过日志文件记录报警历史。PLC(可编程逻辑控制器)在工业自动化领域中扮演着重要的角色,而报警显示和记录是PLC应用中常见的需求。本文将介绍如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。当然,这只是实现报警显示和记录的基本框架,具体的实现方式可能因不同的PLC和HMI库而有所差异。你需要根据你所使用的具体库和设备进行相应的调整和修改。

ByteLegend的博客 1673

大疆RoboMaster嵌入式面试,电机FOC调不出来当场走人

摘要:大疆RoboMaster嵌入式工程师面试以实战能力著称,重点考察FreeRTOS任务调度、FOC电机控制和CAN总线三大核心技能。FreeRTOS部分涉及优先级调度、栈溢出排查及信号量与互斥锁的区别;FOC控制要求现场编写电流环代码,并解释Clarke/Park变换原理;CAN总线则关注仲裁机制、CANopen协议应用及错误帧排查方法。面试强调工程实践,需具备STM32开发经验,建议搭建实际环境进行练习。该岗位被誉为"硬件版修罗场",充分体现大疆对实际开发能力的严格要求。

郑伟强dev的专栏 150

简单好用的python神级调试工具PySnooper

github:https://github.com/cool-RR/PySnooper Example We're writing a function that converts a number to binary, by returning a list of bits. Let's snoop on it by adding the@pysnooper.snoop()decorat...

哦,原来你也在这里。 3153

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

PySnooper – 永远不要使用print进行调试

PySnooper是一个非常方便的调试器。如果您正在试图弄清楚为什么您的Python代码没有按照您的预期去做,您会希望使用具有断点和监视功能的成熟Debug工具,但是许多Debug工具配...

Python实用宝典网 2615

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python 调试冷知识

作者 | 喵叔 责编 | 刘静 出品 | 优快云(ID:优快云news) 对于 python 代码的调试我们通常都是使用 IDE 自带的调试功能。但是 IDE 提供的调试功能存在局限性,例如在测试服务器上调试代码,但是又不可能在测试服务器上安装 IDE 进行调试。这时我们就可以利用下面所讲解的三个工具进行调试。 零、准备调试代码 在讲解三个调试工具前,我们先编写待调试的代码...

优快云资讯 8173

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

PySnooper:告别print调试,Python调试新革命

PySnooper:告别print调试,Python调试新革命 【免费下载链接】PySnooper cool-RR/PySnooper: PySnooper是一个Python调试库,它通过追踪和记录函数调用的内部变量变化及执行流程来帮助开发者更好地理解代码行为,尤其适合在复杂逻辑中查找问题。 ...

gitblog_01068的博客 941

【Python】pysnooper模块对代码进行调试

一般情况下,在编写Python代码时,如果想弄清楚为什么Python代码没有按照预期执行的原因,比如你想知道哪些是正在运行,哪些没有运行,以及局部变量的值是什么...通常我们会使用包含断点和观察模式等功能成熟的调试器,或者直接使用 print 语句打印出来。今天和大家分享一个“贫民版”调试工具——PySnooper

sinat_37967865的博客 409

Python调试神器PySnooper教程

PySnooper教程 引子 作为一名高冷酷且帅的程序开发者,注意,一定要读懂这个帅字…;debug调试的使用频率非常之高,通过debug能找到我们的报错位置,下面让我们来告别传统的断点和print(),提供给大家一个及其简易的python调试神器——PySnooper。有了这个开源工具,我们可以快速定位报错位置以及获取详细信息。 github地址:https://github.com/cool-RR/pysnooper pysnooper官网:https://awesomeopensource.com/p

FM黎明之前的博客 1503

pysnooper,一个好用的 Python 库!

PySnooper是一个用于Python代码调试的库,它通过简单的装饰器启用对函数执行过程的跟踪,无需设置断点即可获得详细的执行日志。这使得PySnooper成为快速诊断问题和理解代码行为的强大工具。它可以定制输出到文件、过滤特定条件的跟踪信息,并支持多种高级功能,如条件跟踪、输出定制等,为开发者提供了极大的灵活性。PySnooper特别适用于调试复杂逻辑、性能分析和教学演示,帮助开发者节省时间,提高调试效率。

涛哥聊Python 1304

pysnooper,一个非常实用的 Python 库!

pysnooper 是一个轻量级的 Python 调试工具,它能够帮助开发者轻松跟踪代码的执行过程,并实时显示变量的值变化。通过使用 pysnooper,开发者可以更加直观地了解代码的执行流程,快速定位问题所在,提高调试效率。在这个示例中,使用参数来自定义输出信息的格式。这样可以更加灵活地控制输出内容,使得调试信息更加清晰易懂。通过本文的介绍,深入了解了 pysnooper 库的原理、基本用法以及一些高级功能。

涛哥聊Python 1358

PySnooper: Python 调试利器,让代码监控更轻松

PySnooper: Python 调试利器,让代码监控更轻松 【免费下载链接】PySnooper cool-RR/PySnooper: PySnooper是一个Python调试库,它通过追踪和记录函数调用的内部变量变化及执行流程来帮助开发者更好地理解代码行为,尤其适合在复杂逻辑中查找问题。 ...

gitblog_00013的博客 492
上一篇: python:批量修改文件的访问时间、修改时间、改变时间!
下一篇: ubuntu:安装及使用OpenCV4.1.0(C++/python)
dulingwen
博客等级 码龄9年 519粉丝 72原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值