Python-调试神器
介绍两款非常好用的调试工具,它能在一些场景下,大幅度提高调试的效率, 一是 PySnooper,二是pdb。
PySnooper
安装
python3 -m pip install pysnooper
使用pysnooper非常简单,在需要调试的代码上加上@pysnooper.snoop() 就行。
使用示例:
import pysnooper@pysnooper.snoop()
def demo_func():dic= {}dic["name"] = "kuokay"dic["age"] = 27dic["gender"] = "male"return profiledef main():profile = demo_func()main()
运行后的结果
root@iswbm ~]# python3 demo.py
Source path:... demo.py
17:52:49.624943 call 4 def demo_func():
17:52:49.625124 line 5 dic= {}
New var:....... dic= {}
17:52:49.625156 line 6 dic["name"] = "kuokay"
Modified var:.. dic = {'name': 'kuokay'}
17:52:49.625207 line 7 dic["age"] = 27
Modified var:.. dic = {'name': 'kuokay', 'age': 27}
17:52:49.625254 line 8 dic["gender"] = "male"
Modified var:.. dic = {'name': 'kuokay', 'age': 27, 'gender': 'male'}
17:52:49.625306 line 10 return dic
17:52:49.625344 return 10 return dic
Return value:.. {'name': 'kuokay', 'age': 27, 'gender': 'male'}
Elapsed time: 00:00:00.000486
可以看到 PySnooper 把函数运行的过程全部记录了下来,包括:
代码的片段、行号等信息,以及每一行代码是何时调用的?
函数内局部变量的值如何变化的?何时新增了变量,何时修改了变量。
函数的返回值是什么?
运行函数消耗了多少时间?
进阶使用
将调试信息重定向输出到某一日志文件中
@pysnooper.snoop(output='/temp/log/debug.log')
设置跟踪函数的深度
@pysnooper.snoop(depth=2)
若该函数中还调用了其他函数,PySnooper 是不会跟踪进去的
设置最大的输出长度
@pysnooper.snoop(max_variable_length=200)
@pysnooper.snoop(thread_info=True)
开启多线程调试
pdb
如果你在服务器上排查BUG,那么使用 PDB 进行无图形界面的调试应该是首选方法。
具体使用可参考以下文档:
参考文档:https://mp.weixin.qq.com/s?__biz=MzIzMzMzOTI3Nw%3D%3D&chksm=e88666cbdff1efddb46599f1165a09eded6e7e224df9006d2efb5c2a7c8b5e5a9504f7083ba5&idx=1&mid=2247484969&scene=21&sn=a99fc31865edc4b439707d2be6f66654#wechat_redirect
官方文档:https://docs.python.org/zh-cn/3/library/pdb.html
Python-调试神器相关推荐
- 清华校友打造Python调试神器
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 写代码 ...
- Debug无忧!清华校友打造Python调试神器:反向追踪变量、数据流等 | 开源
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 写代码时提笔千行,debug时却低效抓狂-- 几乎每个编程者都逃不了这样的纠结. 通过编译器一行行地去找bug,太浪费时间. 所以,一位清 ...
- 一个神级般的 Python 调试神器
贾浩楠 发自 凹非寺 , 量子位 报道 写代码时提笔千行,debug时却低效抓狂-- 几乎每个编程者都逃不了这样的纠结. 通过编译器一行行地去找bug,太浪费时间. 所以,一位清华校友.谷歌工程师l ...
- Debug无忧!清华校友打造Python调试神器
本文转载自 QbitAI,作者 贾浩楠 写代码时提笔千行,debug时却低效抓狂-- 几乎每个编程者都逃不了这样的纠结. 通过编译器一行行地去找bug,太浪费时间. 所以,一位清华校友.谷歌工程师la ...
- 谷歌工程师开源:Python 调试神器 Cyberbrain
点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 来源:Python猫 曾多次在<捕蛇者说>播客听到 laike9m 大佬分享他的 Cyberbra ...
- python调试神器_python调试神器PySnooper的使用
相信很多小伙伴平时写python的时候都是需要调试程序的,出问题了,需要了解函数内部是怎么跑的,而这个时候很多人都会想到在疑惑的地方使用print函数来打印一下参数来调试.虽然用print也是不失为是 ...
- 你必须拥有的Python调试神器
今天推荐一个Python调试工具可以让你的调试更快更方便,叫ipdb. 推荐ipdb主要原因:语法高亮和自动补全,因为很多长变量每次打起来很费劲,这个可以大大提高你的效率,避免出错. 知道的朋友都知道 ...
- python调试神器_你必须拥有的Python调试神器
今天推荐一个Python调试工具可以让你的调试更快更方便,叫ipdb. 推荐ipdb主要原因:语法高亮和自动补全,因为很多长变量每次打起来很费劲,这个可以大大提高你的效率,避免出错. 知道的朋友都知道 ...
- python调试神器_Python里三个最高逼格的调试神器
调试是开发过程中不可避免的一个环节,在Python中我们使用print.logging.assert等方法进行调试既简单又实用,但毕竟有其局限性.今天这篇文章为大家带来三个工具,其中有Python的内 ...
- python调试神器!今天你吃冰淇淋了吗?
相信大部分人学习Python,肯定会用print()这个内置函数,来调试代码的. 那么在一个大型的项目中,如果你也是使用print来调试你的Python代码,你就会发现你的终端有多个输出. 那么你便不 ...
最新文章
- 《我的Python之路V1.3.pdf》可以下载了,这版pdf更精美!
- J2EE项目移植问题一
- js中document.getElementById(ID)与document.getElementsByName(Name)的区别
- Sharepoint2013商务智能学习笔记之Secure Store Service服务配置(二)
- Shiro过滤器源码
- 1024程序员节来啦!!.NET技术圈独家优惠劵,折后再折,赶紧来抢啊
- A8U公司的老程序猿的悲惨下场
- 安卓TableLayout表格布局
- Ox2ac是C语言常量,计算机等级考试二级C++语言程序设计标准预测试卷二
- 整理电力系统GPS时间同步装置(GPS对时系统)孤岛方案
- 微信小程序中自定义模板
- 【第101期】游戏策划:给@山海遥同学的简历解析
- matlab做nmf矩阵分解,进阶理解非负矩阵分解(NMF)
- 常见门电路逻辑符号对照(三态门,同或门,异或门,或非门,与或非门, 传输门,全加器,半加器,基本rs触发器,同步rs触发器,jk触发器,d触发器)
- 利用cobbler 重装系统
- 体育赛事系统设计方案
- 线性回归模型-误差分析
- 英语语法回顾1——简单句
- 计算机二级Java考试笔记
- python 反卷积(DeConv) tensorflow反卷积(DeConv)(实现原理+手写)