python调试利器pysnooper
安装
安装方法很简单,可以使用 pip 或 anaconda 两种安装方法:
$ pip install pysnooper
或者
$ conda install -c conda-forge pysnooper
监控整个函数
一个使用例子如下,首先是需要导入 pysnooper ,然后想知道函数 number_to_bits() 的运行情况,只需要添加 @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 bitselse:return [0]number_to_bits(6)
输出结果
Starting var:.. number = 6
14:52:10.169804 call 4 def number_to_bits(number):
14:52:10.169899 line 5 if number:
14:52:10.169923 line 6 bits = []
New var:....... bits = []
14:52:10.169940 line 7 while number:
14:52:10.169963 line 8 number, remainder = divmod(number, 2)
Modified var:.. number = 3
New var:....... remainder = 0
14:52:10.169981 line 9 bits.insert(0, remainder)
Modified var:.. bits = [0]
14:52:10.170006 line 7 while number:
14:52:10.170028 line 8 number, remainder = divmod(number, 2)
Modified var:.. number = 1
Modified var:.. remainder = 1
14:52:10.170045 line 9 bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
14:52:10.170068 line 7 while number:
14:52:10.170088 line 8 number, remainder = divmod(number, 2)
Modified var:.. number = 0
14:52:10.170104 line 9 bits.insert(0, remainder)
Modified var:.. bits = [1, 1, 0]
14:52:10.170124 line 7 while number:
14:52:10.170143 line 10 return bits
14:52:10.170159 return 10 return bits
Return value:.. [1, 1, 0]
监控函数一部分
通过使用with 将想要监控的部分包含起来
import pysnooper
import randomdef 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) / 2print(lower, mid, upper)foo()
输出为
New var:....... lst = [166, 196, 138, 683, 176, 265, 838, 597, 105, 407]
New var:....... i = 9
14:55:33.853343 line 10 lower = min(lst)
New var:....... lower = 105
14:55:33.853460 line 11 upper = max(lst)
New var:....... upper = 838
105 471.5 838
14:55:33.853492 line 12 mid = (lower + upper) / 2
New var:....... mid = 471.5
14:55:33.853520 line 13 print(lower, mid, upper)
其他使用技巧
重定向到文件, 在文件中查看
@pysnooper.snoop('/my/log/file.log')
监控函数外变量
@pysnooper.snoop(watch=('number','number1'))
def number_to_bits():global numberif number:
查看list或者dict等引用的每个元素的值的变化(默认只显示整个对象的变化,不会针对每个元素的变化提示)
@pysnooper.snoop(watch_explode=('bits','bits1'))
跟踪的函数深度,默认为1,只跟踪当前函数的变量的变化
@pysnooper.snoop(depth=2)
在跟踪日志前面加前缀, 方便跟自己的日志进行区分
@pysnooper.snoop(prefix='ZZZ ')
python调试利器pysnooper相关推荐
- 【GitHub探索】python调试利器——pysnooper源码分析
前言 这次又开了个新坑--GitHub探索,主要内容是试水当期GitHub上较火的repo 虽然top榜上各路新手教程跟经典老不死项目占据了大半江山,但清流总是会有的. 第一期就试水一下pysnoop ...
- [转]PDB——Python调试利器详解
python 2.7 pdb官方文档:https://docs.python.org/2.7/library/pdb.html pdb是ptyhon内置的一个调试库,是调试python代码的好帮手,本 ...
- pdb python 命令_PDB——Python调试利器详解
pdb是ptyhon内置的一个调试库,是调试python代码的好帮手,本文是对其用法的详细介绍. QuickStart 待调试的代码内容 文件名:test.py: # coding:utf-8 imp ...
- python debug 调试工具 pysnooper
文章目录 安装 定义1个函数,查看调试 把调试的内容写入debug.log文件 查看多个函数,有层级关系 给debug信息添加前缀 设置跟踪函数的深度(默认深度为1,只调试当前函数) 设置最大的输出长 ...
- python利器的使用-PPython:PHP 拥抱 Python 的利器
原标题:PPython:PHP 拥抱 Python 的利器 原创: 作者/望星星降 介绍 Python 与 PHP 都是广泛使用的语言,各有所长,让人期待两者结合可以实现更丰富的效果. 在 PHP 中 ...
- Python - 调试Python代码的方法
调试(debug) 将可疑环节的变量逐步打印出来,从而检查哪里是否有错. 让程序一部分一部分地运行起来.从核心功能开始,写一点,运行一点,再修改一点. 利用工具,例如一些IDE中的调试功能,提高调试效 ...
- 关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享
随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 转自:https://my.oschina.net/leejun2005/blog/151103 1.原理简介 ...
- 【远程文件浏览器】Unity+Lua开发调试利器
Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...
- Python爬虫利器四之PhantomJS的用法
随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 原文这篇文章讲解的纯PhantomJS的用法,讲得比较细致,具体可以跟Python也可以跟node等结合使用. ...
最新文章
- python 把列表或者元组转成集合
- 主流微服务全链路监控系统之战
- RemoveError: ‘requests‘ is a dependency of conda and cannot be removed from conda‘s operating envir
- AI赌神升级!无惧bluff,6人局德扑完胜世界冠军,训练只用了8天
- js,jq设置获取属性,样式
- 天马微电子的mes工程师_上海天马微电子MES工程师职位(部门:制造中心/自动化部)怎么样?...
- 使用lodash防抖_什么,lodash 的防抖失效了?
- 值转换成布尔类型的False;
- [DiMP跟踪算法]代码学习笔记
- LabVIEW与西门子1200,1500系列Sanp7协议通讯案例+QMH标准框架编写,非常实用,长期测试通讯无误。
- java sasl例子_Java Subject.doAs方法代碼示例
- 机器学习实战案例—验证码(CAPTCHA)识别基于Logistic
- 基于stc51单片机的指纹解锁模块
- 包邮再送500份!我们自制了一张【数据分析知识鼠标垫】,抓紧领取
- 25款专业的 WordPress 电子商务网站主题
- 《逃离禁闭岛》游戏评测:不一样的密室逃脱
- 职场摸爬滚打的卑微软件测试工!外包干了三年后,我废了...
- 修理机器人基维斯_《魔兽世界》魔兽世界机器人攻略
- java 根据ip地址获取地理位置及运营商。
- 小白计算机视觉学习报告
热门文章
- python从入门到精通pdf下载-Python网络爬虫从入门到精通 PDF 下载
- python基础教程百度云-python从入门到精通视频教程百度云资源
- 灵云语音识别(ASR)实现实时识别
- 30轧制过程的计算机控制系统,中厚板轧制过程计算机控制系统结构的研制(1)
- linux安装pdo mysql扩展_linux下php安装pdo_mysql扩展
- cpu上干硅脂怎么清理_cpu导热硅脂如何涂抹,涂抹的时候需要注意哪些事项
- 3d怎么把两个面拼接在一起_视频拼接怎么做?如何将多段视频拼接在一起?
- Bootstrap Table API 中文版 说明文档
- npm修改全局包安装路径
- 兰州大学第一届『飞马杯』程序设计竞赛(同步赛),签到题ACFHJ