文章目录

  • 安装
  • 定义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相关推荐

  1. python debug工具_极简Python DeBug工具——PySnooper

    DeBug Python 代码的方式有很多种?比如: (1)设置断点 (2)print函数 (3)... 本文要介绍的是一个新开源的项目PySnooper ,只要给有疑问的代码加上装饰器,各种信息一目 ...

  2. 【Jupyter notebook设置】 墙裂推荐Variable Inspector | DeBug工具PySnooper | 暗色系个性化

    偶尔没事会捣鼓一下一些个性化设置 可以用起来方便好看点 墙裂推荐一款 Variable Inspector 插件--可以用来观察包含 DataFrame 等变数的大小(不必一个个'print') 还有 ...

  3. python中debug有什么用途_史上最方便的Python Debug工具

    最近在github上冒出了一个python的debug神器PySnooper,号称在debug时可以消灭print.那么该工具有哪些优点呢,如何使用该工具呢.本文就介绍该工具的优缺点和使用方式. 前言 ...

  4. python代码调试工具_我猜你需要这个Python调试工具

    一般情况下,在编写 Python 代码时,如果想弄清楚为什么 Python 代码没有按照预期执行的原因,比如你想知道哪些是正在运行,哪些没有运行,以及局部变量的值是什么...通常我们会使用包含断点和观 ...

  5. python debug

    python debug posted on 2016-03-30 16:53 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/r ...

  6. debug 调试工具

    debug 调试工具 作用 : 1.追踪程序的执行流程 2.快速定位异常出现的位置 3.观察程序执行中变量变化的情况 4.通过追踪程序的执行流程学习一些第三方框架的源码 步骤 :1.设置断点在行号的后 ...

  7. 【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' 在网上没有搜到直接匹配的答案 分析 ...

  8. 初识JAVA07:自定义类、构造方法、this关键字、static关键字、block关键字、Debug调试工具

    JAVA面向对象01 面向对象 自定义类 构造方法 this关键字 static关键字 block关键字 Debug调试工具 面向对象 面向对象和面向过程的区别: ​ 面向过程: ​ 关注" ...

  9. vscode python debug lauch.json 配置:

    记录个人常用launch.json 配置信息: python debug 常用配置 {// 使用 IntelliSense 了解相关属性. // 悬停以查看现有属性的描述.// 欲了解更多信息,请访问 ...

最新文章

  1. WWDC2018总结
  2. 异步委托实现多线程winform控件编程
  3. linux下ioctl遇到的坑
  4. [Prism]Composite Application Guidance for WPF(10)——系列目录导航
  5. go的错误处理(异常捕获、处理):defer+recover机制处理错误、自定义异常(自定义错误)
  6. 【知识小课堂】mongodb 之 查询关键词使用
  7. I - 滑雪 POJ - 1088(深搜,记忆化搜索)
  8. fcpx插件:21个模拟相机取景器数码屏显效果预设Camera Rec
  9. 【es】client通信流程与负载均衡
  10. 操作系统-Windows操作系统的线程调度了解这些
  11. 软件工程理论方法与实践
  12. tab切换中的滚动条下拉分页带来的问题
  13. Python访问MySQL数据库速度慢解决方法
  14. android+开发平板应用,Android平板应用开发教程
  15. python分析鸢尾花数据_iris鸢尾花数据集最全数据分析
  16. 开发悬赏平台APP心得
  17. 科技赋能时代 用ocr身份证识别
  18. 一文讲透高速缓存原理
  19. Macbook无法开机?如何尝试自救
  20. 论文阅读笔记-Gated relational stacked denoising autoencoder with localized author embedding for

热门文章

  1. elasticsearch多表关联查询_Mybatis【15】 Mybatis如何实现一对一的情况多表关联查询?...
  2. 通讯速率_什么是通讯?
  3. RDKit:基于RECAP生成片段
  4. Python求解最速降线问题
  5. Linux绝对权限和相对权限法,Linux基础学习笔记
  6. python大神教程_大神python教程415集全套,拿走不谢
  7. 阿里云证书 | 套路太深,还是我打开姿势不对?
  8. R 语言柱状图示例笔记
  9. 2000+引用的fastp推出重磅更新,再提速一倍!
  10. Nature:梁冠翔等发现肠道病毒组在新生儿体内分段寄生的模式