python debug 调试工具 pysnooper
文章目录
- 安装
- 定义1个函数,查看调试
- 把调试的内容写入debug.log文件
- 查看多个函数,有层级关系
- 给debug信息添加前缀
- 设置跟踪函数的深度(默认深度为1,只调试当前函数)
- 设置最大的输出长度,
- 支持多线程调试模式
安装
pip install pysnooper
定义1个函数,查看调试
import pysnooper@pysnooper.snoop() # 调试装饰器
def fun1(a):a += 1a += 2return afun1(0)
C:\Python38\python.exe C:/test.py
Source path:... C:/test.py
Starting var:.. a = 0
16:23:41.958115 call 5 def fun1(a):
16:23:41.959113 line 6 a += 1
Modified var:.. a = 1
16:23:41.959113 line 7 a += 2
Modified var:.. a = 3
16:23:41.959113 line 8 return a
16:23:41.959113 return 8 return a
Return value:.. 3
Elapsed time: 00:00:00.000998
把调试的内容写入debug.log文件
import pysnooper@pysnooper.snoop(output='debug.log') # 调试装饰器
def fun1(a):a += 1a += 2return afun1(0)
查看多个函数,有层级关系
import pysnooper@pysnooper.snoop() # 调试装饰器
def fun1(a):a += 1a += 2return a@pysnooper.snoop() # 调试装饰器
def fun2(a): # 要调试的函数b = fun1(a)b += 3b += 4fun2(0) # 运行函数
输出
C:\Python38\python.exe C:/Users/xiahuadong/Desktop/xiahuadongCode/algorithm_AI/wav2Lip/test.py
Source path:... C:/Users/xiahuadong/Desktop/xiahuadongCode/algorithm_AI/wav2Lip/test.py
Starting var:.. a = 0
16:34:39.240023 call 12 def fun2(a): # 要调试的函数
16:34:39.240023 line 13 b = fun1(a)Source path:... C:/Users/xiahuadong/Desktop/xiahuadongCode/algorithm_AI/wav2Lip/test.pyStarting var:.. a = 016:34:39.240023 call 5 def fun1(a):16:34:39.240023 line 6 a += 1Modified var:.. a = 116:34:39.240023 line 7 a += 2Modified var:.. a = 316:34:39.240023 line 8 return a16:34:39.240023 return 8 return aReturn value:.. 3Elapsed time: 00:00:00.000000
New var:....... b = 3
16:34:39.240023 line 14 b += 3
Modified var:.. b = 6
16:34:39.240023 line 15 b += 4
Modified var:.. b = 10
16:34:39.240023 return 15 b += 4
Return value:.. None
Elapsed time: 00:00:00.000000Process finished with exit code 0
给debug信息添加前缀
import pysnooper@pysnooper.snoop(prefix="fun1 ") # 调试装饰器
def fun1(a):a += 1a += 2return a@pysnooper.snoop(prefix="fun2 ") # 调试装饰器
def fun2(a): # 要调试的函数b = fun1(a)b += 3b += 4fun2(0) # 运行函数
输出
C:\Python38\python.exe C:/Users/xiahuadong/Desktop/xiahuadongCode/algorithm_AI/wav2Lip/test.py
fun2 Source path:... C:/Users/xiahuadong/Desktop/xiahuadongCode/algorithm_AI/wav2Lip/test.py
fun2 Starting var:.. a = 0
fun2 16:41:36.065410 call 12 def fun2(a): # 要调试的函数
fun2 16:41:36.065410 line 13 b = fun1(a)
fun1 Source path:... C:/Users/xiahuadong/Desktop/xiahuadongCode/algorithm_AI/wav2Lip/test.py
fun1 Starting var:.. a = 0
fun1 16:41:36.065410 call 5 def fun1(a):
fun1 16:41:36.065410 line 6 a += 1
fun1 Modified var:.. a = 1
fun1 16:41:36.065410 line 7 a += 2
fun1 Modified var:.. a = 3
fun1 16:41:36.065410 line 8 return a
fun1 16:41:36.065410 return 8 return a
fun1 Return value:.. 3
fun1 Elapsed time: 00:00:00.000000
fun2 New var:....... b = 3
fun2 16:41:36.065410 line 14 b += 3
fun2 Modified var:.. b = 6
fun2 16:41:36.065410 line 15 b += 4
fun2 Modified var:.. b = 10
fun2 16:41:36.065410 return 15 b += 4
fun2 Return value:.. None
fun2 Elapsed time: 00:00:00.000000Process finished with exit code 0
设置跟踪函数的深度(默认深度为1,只调试当前函数)
import pysnooperdef fun1(a):a += 1a += 2return a@pysnooper.snoop(depth=2) # 调试深度2层
def fun2(a):b = fun1(a)b += 3b += 4fun2(0) # 运行函数
C:\Python38\python.exe C:/Users/xiahuadong/Desktop/xiahuadongCode/algorithm_AI/wav2Lip/test.py
Source path:... C:/Users/xiahuadong/Desktop/xiahuadongCode/algorithm_AI/wav2Lip/test.py
Starting var:.. a = 0
16:48:13.839873 call 11 def fun2(a):
16:48:13.839873 line 12 b = fun1(a)Starting var:.. a = 016:48:13.839873 call 4 def fun1(a):16:48:13.839873 line 5 a += 1Modified var:.. a = 116:48:13.839873 line 6 a += 2Modified var:.. a = 316:48:13.839873 line 7 return a16:48:13.839873 return 7 return aReturn value:.. 3
New var:....... b = 3
16:48:13.840870 line 13 b += 3
Modified var:.. b = 6
16:48:13.840870 line 14 b += 4
Modified var:.. b = 10
16:48:13.840870 return 14 b += 4
Return value:.. None
Elapsed time: 00:00:00.000997Process finished with exit code 0
设置最大的输出长度,
默认情况下,PySnooper 输出的变量和异常信息,如果超过 100 个字符,被会截断为 100 个字符。
@pysnooper.snoop(max_variable_length=200)
也可以使用max_variable_length=None它从不截断它们
支持多线程调试模式
@pysnooper.snoop(thread_info=True)
python debug 调试工具 pysnooper相关推荐
- python debug工具_极简Python DeBug工具——PySnooper
DeBug Python 代码的方式有很多种?比如: (1)设置断点 (2)print函数 (3)... 本文要介绍的是一个新开源的项目PySnooper ,只要给有疑问的代码加上装饰器,各种信息一目 ...
- 【Jupyter notebook设置】 墙裂推荐Variable Inspector | DeBug工具PySnooper | 暗色系个性化
偶尔没事会捣鼓一下一些个性化设置 可以用起来方便好看点 墙裂推荐一款 Variable Inspector 插件--可以用来观察包含 DataFrame 等变数的大小(不必一个个'print') 还有 ...
- python中debug有什么用途_史上最方便的Python Debug工具
最近在github上冒出了一个python的debug神器PySnooper,号称在debug时可以消灭print.那么该工具有哪些优点呢,如何使用该工具呢.本文就介绍该工具的优缺点和使用方式. 前言 ...
- python代码调试工具_我猜你需要这个Python调试工具
一般情况下,在编写 Python 代码时,如果想弄清楚为什么 Python 代码没有按照预期执行的原因,比如你想知道哪些是正在运行,哪些没有运行,以及局部变量的值是什么...通常我们会使用包含断点和观 ...
- python debug
python debug posted on 2016-03-30 16:53 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/r ...
- debug 调试工具
debug 调试工具 作用 : 1.追踪程序的执行流程 2.快速定位异常出现的位置 3.观察程序执行中变量变化的情况 4.通过追踪程序的执行流程学习一些第三方框架的源码 步骤 :1.设置断点在行号的后 ...
- 【python debug】could not convert string to float: ‘File‘ got an unexpected keyword argument
python debug过程中碰到的问题随手记录 报错1:ValueError: could not convert string to float: 'File' 在网上没有搜到直接匹配的答案 分析 ...
- 初识JAVA07:自定义类、构造方法、this关键字、static关键字、block关键字、Debug调试工具
JAVA面向对象01 面向对象 自定义类 构造方法 this关键字 static关键字 block关键字 Debug调试工具 面向对象 面向对象和面向过程的区别: 面向过程: 关注" ...
- vscode python debug lauch.json 配置:
记录个人常用launch.json 配置信息: python debug 常用配置 {// 使用 IntelliSense 了解相关属性. // 悬停以查看现有属性的描述.// 欲了解更多信息,请访问 ...
最新文章
- WWDC2018总结
- 异步委托实现多线程winform控件编程
- linux下ioctl遇到的坑
- [Prism]Composite Application Guidance for WPF(10)——系列目录导航
- go的错误处理(异常捕获、处理):defer+recover机制处理错误、自定义异常(自定义错误)
- 【知识小课堂】mongodb 之 查询关键词使用
- I - 滑雪 POJ - 1088(深搜,记忆化搜索)
- fcpx插件:21个模拟相机取景器数码屏显效果预设Camera Rec
- 【es】client通信流程与负载均衡
- 操作系统-Windows操作系统的线程调度了解这些
- 软件工程理论方法与实践
- tab切换中的滚动条下拉分页带来的问题
- Python访问MySQL数据库速度慢解决方法
- android+开发平板应用,Android平板应用开发教程
- python分析鸢尾花数据_iris鸢尾花数据集最全数据分析
- 开发悬赏平台APP心得
- 科技赋能时代 用ocr身份证识别
- 一文讲透高速缓存原理
- Macbook无法开机?如何尝试自救
- 论文阅读笔记-Gated relational stacked denoising autoencoder with localized author embedding for
热门文章
- elasticsearch多表关联查询_Mybatis【15】 Mybatis如何实现一对一的情况多表关联查询?...
- 通讯速率_什么是通讯?
- RDKit:基于RECAP生成片段
- Python求解最速降线问题
- Linux绝对权限和相对权限法,Linux基础学习笔记
- python大神教程_大神python教程415集全套,拿走不谢
- 阿里云证书 | 套路太深,还是我打开姿势不对?
- R 语言柱状图示例笔记
- 2000+引用的fastp推出重磅更新,再提速一倍!
- Nature:梁冠翔等发现肠道病毒组在新生儿体内分段寄生的模式