zoukankan      html  css  js  c++  java
  • 使用PySnooper记录查看代码运行过程日志,断点调试之外的又一选择

    如果你写的 Python 代码不能按如期那样运行,你会绞尽脑汁想为啥出错了。虽然你希望有支持断点的成熟调试器,但或许你现在不想去设置这样的调试器。


    你想知道哪些行代码是正常运行,哪些行不正常。据说大多数人会在可疑位置使用 print 输出语句。


    其实 PySnooper 的作用有点类似,你不用小心谨慎地用 print 输出语句,只需在想调试的函数中引入一个装饰器。然后得到函数的详细日志,包括运行了哪些行、何时运行,以及何时更改了局部变量。


    为什么 PySnooper 能从其他智能调试工具中脱颖而出?


    因为你可以在不需要进行任何设置的情况下将其用于糟糕的、庞大的企业代码库中。只需打开装饰器(如下示例所示),并将输出重定向到一个专用的日志文件,将日志文件路径指定为第一个参数。


    使用范例


    范例是一个把数字转成二进制的函数。

    import pysnooper

    @pysnooper.snoop()
    def number_to_bits(number):
        if number:
            bits = []
            while number:
                number, remainder = divmod(number, 2)
                bits.insert(0, remainder)
            return bits
        else:
            return [0]

    number_to_bits(6)


    输出范例

    Starting var:.. number = 6
    21:14:32.099769 call         3 @pysnooper.snoop()
    21:14:32.099769 line         5     if number:
    21:14:32.099769 line         6         bits = []
    New var:....... bits = []
    21:14:32.099769 line         7         while number:
    21:14:32.099769 line         8             number, remainder = divmod(number, 2)
    New var:....... remainder = 0
    Modified var:.. number = 3
    21:14:32.099769 line         9             bits.insert(0, remainder)
    Modified var:.. bits = [0]
    21:14:32.099769 line         7         while number:
    21:14:32.099769 line         8             number, remainder = divmod(number, 2)
    Modified var:.. number = 1
    Modified var:.. remainder = 1
    21:14:32.099769 line         9             bits.insert(0, remainder)
    Modified var:.. bits = [1, 0]
    21:14:32.099769 line         7         while number:
    21:14:32.099769 line         8             number, remainder = divmod(number, 2)
    Modified var:.. number = 0
    21:14:32.099769 line         9             bits.insert(0, remainder)
    Modified var:.. bits = [1, 1, 0]
    21:14:32.099769 line         7         while number:
    21:14:32.099769 line        10         return bits
    21:14:32.099769 return      10         return bits


    有兴趣的童鞋,请收藏:

    https://github.com/cool-RR/PySnooper

  • 相关阅读:
    C++中所有的变量和函数都必须有类型
    C++中struct类型增强
    C++对C语言的变量检测增强
    C++对C语言register的增强
    C++对C的实用性增强
    namespace命名空间
    文件操作:fseek函数和ftell函数
    最大子序和
    雪花雪花雪花(Hash思想)
    暑假集训-8.01总结
  • 原文地址:https://www.cnblogs.com/nica/p/11956533.html
Copyright © 2011-2022 走看看