简介

pysnooper是低配版debugger,别再用print进行debug了。

动机

想象一个场景,你的Python代码运行后不产生你要的效果,你想要知道为什么。

你知道一般这种情况,你需要一个debugger,但是你不想很麻烦的去搭建debugger工具然后运行,这很费时间。

作用

你需要的其实就是,想要知道程序的哪些行运行过,哪些行没有运行,以及一些局部变量的值。

你会说只要在何时的位置使用print就可以做到。

pysnooper1也可以帮你做到这些事,但是你不需要去斟酌在哪些地方加入print,你只需要在你感兴趣的函数上面加入一个装饰器,你就可以获得函数每一步的运行日志了。

pysnooper相当于其它的代码调试工具有什么突出点呢?你可以把它用在你的屎山代码库中,只要加上装饰器,然后将调试信息输出到你指定的log文件就行。

用法

热度分析

截止2019.5.2,这个仓库已经获得了8819star, 476fork。而这个仓库第一个commit的日期是2019.4.14!!!

这个仓库的传播热度是我前所未见的,证明真的碰到了大多数人的痛点!

源码分析

通过源码可以看出作者的Python编程经验很足。很多2to3的特性都了解。

TODO:

  • 为什么可以捕获函数运行时每一次执行?
  • 为什么可以捕获函数运行时每一次执行的local变量

个人评分

类型 评分
实用性 ⭐️⭐️⭐️⭐️
易用性 ⭐️⭐️⭐️⭐️⭐️
有趣性 ⭐️⭐️⭐️⭐️

【AMAD】Pysnooper -- 别再用print进行debug了的更多相关文章

  1. [改变自己wordpress.2]至wordpress再加上简单的debug sql调试.

    或者说,同事. 需要帮助她打印出来sql 调试输出到页面sql 在这里,我们使用插件或一个的方式来启动配置文件wordpress的debug 在插件文件夹 wordpress/wp-content/p ...

  2. MonoBehaviour.print和Debug.Log是同样的作用

    MonoBehaviour.print("identical------------------------");

  3. PHP: How to print a debug log?

    file_put_contents('php://stderr', print_r("hello ", TRUE)); 转自: http://stackoverflow.com/q ...

  4. (数据科学学习手札127)在Python中使用icecream实现高效debug

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 尽管有那么多花里胡哨的debug工具和方式 ...

  5. Unity用GUI绘制Debug/print窗口/控制台-打包后测试

    Unity游戏视窗控制台输出 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...

  6. Perl Print Win32 Console Windows 控制台 print Unicode 问题

    参考资料: https://stackoverflow.com/questions/15224400/perl-on-windows-problems-with-encoding https://te ...

  7. Maven之debug技巧

    mvn eclipse:clean eclipse:eclipse -Dwtpversion=2.0 可以将项目编译为web项目,然后再项目上右键debug as server即可.

  8. linux kernel driver debug

    1. print printk(): never pr_debug(): always good dev_dbg(): prefered when you have a struct device o ...

  9. print spooler 服务无法启动 打印机全部消失

    这往往是失败的打印任务导致的. 打开 C:\Windows\System32\spool\PRINTERS ,这个目录下的文件全是打印缓存,失败的任务也保存在这里.把这里的文件全部删除,然后再重新启动 ...

随机推荐

  1. 观察数组 -vue

    1.vue中的被包装的观察数组能够触发视图更新 2.有push(),pop(),shift(),unshift(),splice(),sort(),reverse() 3.不能检测到下面数组变化: 1 ...

  2. json_decode 和 json_encode 区别

    json_decode: json字符串转json对象json_encode: json对象转json字符串 json对象: { "id": 68, "order_no& ...

  3. Java-WebServiceUtil工具类

    /** * Program : WebServiceUtil.java * Author : leigq * Create : 2010-11-12 上午09:02:05 * * Copyright ...

  4. ORA-03113:通信通道的文件结尾处理

     ORA-03113:通信通道的文件结尾执行:alter system set "_optimizer_join_elimination_enabled"=false; cmdsq ...

  5. java中的排列组合

    使用之前需要声明一个Combine的对象,调用startCombile方法,可返回想要的组合数或者个数,参数介绍很重要 public class Combine { private Object[] ...

  6. Libreoffice/Office:禁止首字母自动大写功能

     造冰箱的大熊猫@cnblogs 2019/1/24 在LibreOffice(5.1.6.2)中,要禁止或者使能首字母自动大写功能,点击菜单项“Tools>>AutoCorrect Op ...

  7. Hibernate 5 发行组件下载

    Hibernate 项目小组提供了一系列发布组合(bundles),这些发布组合发布在 SourceForge 文件发布系统中.这些发布的包有 TGZ 和ZIP 格式. 每一个发布组合包含有 JAR ...

  8. 27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解

    本章将会介绍 Python 内置的四种常用数据结构:列表(list).元组(tuple).字典(dict)以及集合(set). 这四种数据结构一但都可用于保存多个数据项,这对于编程而言是非常重要的,因 ...

  9. spark feature

    spark推测执行:当成功的Task数超过总Task数的75%(可通过参数spark.speculation.quantile设置)时,再统计所有成功的Tasks的运行时间,得到一个中位数,用这个中位 ...

  10. Android学习_广播接收器

    一.广播 1. 标准广播和有序广播 标准广播:异步,发出消息,所有接收器同时接收.但无法被截断 有序广播:同步,同一时刻只有一个广播接收器接收.可截断消息. 2. 广播注册 代码中注册(动态注册).A ...