【基础14】【自学笔记】python使用 PySnopper 调试疑难杂症
一、快速安装
执行下面这些命令进行安装 PySnooper
$ python3 -m pip install pysnoopere
二、快速使用
1、 定义了一个 demo_func 的函数,在里面生成一个 profile 的字典,更新字典值,最后返回
import pysnooper @pysnooper.snoop() def demo_func(): profile = {} profile["name"] = "写代码的小风" profile["age"] = 27 profile["gender"] = "male" return profile def main(): profile = demo_func() main()
运行结果:
Source path:... E:/xry/pyqt_lx/python基础/PySnopper 调试疑难杂症.py 14:51:53.197605 call 22 def demo_func(): 14:51:53.197605 line 23 profile = {} New var:....... profile = {} 14:51:53.197605 line 24 profile["name"] = "写代码的小风" Modified var:.. profile = {'name': '写代码的小风'} 14:51:53.197605 line 25 profile["age"] = 27 Modified var:.. profile = {'name': '写代码的小风', 'age': 27} 14:51:53.197605 line 26 profile["gender"] = "male" Modified var:.. profile = {'name': '写代码的小风', 'age': 27, 'gender': 'male'} 14:51:53.197605 line 28 return profile 14:51:53.197605 return 28 return profile Return value:.. {'name': '写代码的小风', 'age': 27, 'gender': 'male'} Elapsed time: 00:00:00.000000
PySnooper 把函数运行的过程全部记录了下来,包括代码的片段、行号等信息、函数内局部变量的值如何变化、函数的返回值、运行函数耗时
2、重定向到日志文件
import pysnooper @pysnooper.snoop(output='./debug.log') def demo_func(): profile = {} profile["name"] = "写代码的明哥" profile["age"] = 27 profile["gender"] = "male" return profile def main(): profile = demo_func() main()
3、跟踪非局部变量值,设置调试日志的前缀
ySnooper 是以函数为单位进行调试的,它默认只会跟踪函数体内的局部变量,若想跟踪全局变量,可以给 @pysnooper.snoop()
加上 watch
参数,通过 prefix="demo_cs:" 设置日志前缀显示
import pysnooper out = {"foo": "bar"} @pysnooper.snoop(watch=('out["foo"]'), prefix="demo_cs:") def demo_func(): profile = {} profile["name"] = "写代码的小风" profile["age"] = 27 profile["gender"] = "male" out["foo"]="foobar" return profile def main(): profile = demo_func() main()
PySnooper 会在 out["foo"]
值有变化时,也将其打印出来
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/15745024.html