介绍两款非常好用的调试工具,它能在一些场景下,大幅度提高调试的效率, 一是 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-调试神器相关推荐

  1. 清华校友打造Python调试神器

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 写代码 ...

  2. Debug无忧!清华校友打造Python调试神器:反向追踪变量、数据流等 | 开源

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 写代码时提笔千行,debug时却低效抓狂-- 几乎每个编程者都逃不了这样的纠结. 通过编译器一行行地去找bug,太浪费时间. 所以,一位清 ...

  3. 一个神级般的 Python 调试神器

    贾浩楠 发自 凹非寺 ,  量子位 报道 写代码时提笔千行,debug时却低效抓狂-- 几乎每个编程者都逃不了这样的纠结. 通过编译器一行行地去找bug,太浪费时间. 所以,一位清华校友.谷歌工程师l ...

  4. Debug无忧!清华校友打造Python调试神器

    本文转载自 QbitAI,作者 贾浩楠 写代码时提笔千行,debug时却低效抓狂-- 几乎每个编程者都逃不了这样的纠结. 通过编译器一行行地去找bug,太浪费时间. 所以,一位清华校友.谷歌工程师la ...

  5. 谷歌工程师开源:Python 调试神器 Cyberbrain

    点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 来源:Python猫 曾多次在<捕蛇者说>播客听到 laike9m 大佬分享他的 Cyberbra ...

  6. python调试神器_python调试神器PySnooper的使用

    相信很多小伙伴平时写python的时候都是需要调试程序的,出问题了,需要了解函数内部是怎么跑的,而这个时候很多人都会想到在疑惑的地方使用print函数来打印一下参数来调试.虽然用print也是不失为是 ...

  7. 你必须拥有的Python调试神器

    今天推荐一个Python调试工具可以让你的调试更快更方便,叫ipdb. 推荐ipdb主要原因:语法高亮和自动补全,因为很多长变量每次打起来很费劲,这个可以大大提高你的效率,避免出错. 知道的朋友都知道 ...

  8. python调试神器_你必须拥有的Python调试神器

    今天推荐一个Python调试工具可以让你的调试更快更方便,叫ipdb. 推荐ipdb主要原因:语法高亮和自动补全,因为很多长变量每次打起来很费劲,这个可以大大提高你的效率,避免出错. 知道的朋友都知道 ...

  9. python调试神器_Python里三个最高逼格的调试神器

    调试是开发过程中不可避免的一个环节,在Python中我们使用print.logging.assert等方法进行调试既简单又实用,但毕竟有其局限性.今天这篇文章为大家带来三个工具,其中有Python的内 ...

  10. python调试神器!今天你吃冰淇淋了吗?

    相信大部分人学习Python,肯定会用print()这个内置函数,来调试代码的. 那么在一个大型的项目中,如果你也是使用print来调试你的Python代码,你就会发现你的终端有多个输出. 那么你便不 ...

最新文章

  1. 《我的Python之路V1.3.pdf》可以下载了,这版pdf更精美!
  2. J2EE项目移植问题一
  3. js中document.getElementById(ID)与document.getElementsByName(Name)的区别
  4. Sharepoint2013商务智能学习笔记之Secure Store Service服务配置(二)
  5. Shiro过滤器源码
  6. 1024程序员节来啦!!.NET技术圈独家优惠劵,折后再折,赶紧来抢啊
  7. A8U公司的老程序猿的悲惨下场
  8. 安卓TableLayout表格布局
  9. Ox2ac是C语言常量,计算机等级考试二级C++语言程序设计标准预测试卷二
  10. 整理电力系统GPS时间同步装置(GPS对时系统)孤岛方案
  11. 微信小程序中自定义模板
  12. 【第101期】游戏策划:给@山海遥同学的简历解析
  13. matlab做nmf矩阵分解,进阶理解非负矩阵分解(NMF)
  14. 常见门电路逻辑符号对照(三态门,同或门,异或门,或非门,与或非门, 传输门,全加器,半加器,基本rs触发器,同步rs触发器,jk触发器,d触发器)
  15. 利用cobbler 重装系统
  16. 体育赛事系统设计方案
  17. 线性回归模型-误差分析
  18. 英语语法回顾1——简单句
  19. 计算机二级Java考试笔记
  20. python 反卷积(DeConv) tensorflow反卷积(DeConv)(实现原理+手写)

热门文章

  1. Python基础语法——运算符
  2. 小红书KOC和KOL之间如何进行组合宣传?
  3. 3ds Max 实验三 二维图形建模的基本应用
  4. 一键批量自动查询IP归属地+手机号归属地脚本
  5. dateutil(dateutils)
  6. 交易平台 MT4 与 MT5:哪个更好?
  7. TI毫米波级联雷达评估板 MMWCAS-DSP-EVM 和MMWCAS-RF-EVM
  8. SQL 流程控制语句 之五 RETURN语句介绍
  9. SQL SERVER 利用ROW_NUMBER 删除重复数据
  10. 浅析油田有线数字电视机顶盒发放策略