DeBug Python神級工具PySnooper

2021-09-19 15:08:30 字數 2543 閱讀 6589

github專案位址 安裝

pip3 install 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 =621

: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 =

0modified var:

.. number =321

: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 =

1modified var:

.. remainder =121

: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 =021

: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 bits21:

14:32.099769

return

10return bits

pysnooper特徵

如果標準錯誤輸出難以獲得,或者太長了,那麼可以將輸出定位到本地檔案:

@pysnooper.snoop(

'/my/log/file.log'

)

檢視一些非本地變數的值:

@pysnooper.snoop(variables=

('foo.bar'

,'self.whatever'

))

展示我們函式中呼叫函式的 snoop 行:

@pysnooper.snoop(depth=

2)

將所有 snoop 行以某個字首開始,更容易定位和找到:

@pysnooper.snoop(prefix=

'zzz '

)

更可以用來獲取tensorflow 的各種張量資訊,十分強大。媽媽再也不用擔心我找不到bug啦!

(2019.5.7更新:有時會不起作用,不知是自己姿勢不對還是其他原因。)

玩轉Linux 神級工具 sed awk

這裡是我在網上書上收集的相關資料,因為這兩個工具很有名也很重要,所以這些資料會幫助我更好的了解和熟悉它們。在 sed and awk 一書中 1.2 a stream editor 的解釋是 sed本質上是乙個編輯器,但是它是非互動式的,這點與vim不同 同時它又是面向字元流的,輸入的字元流經過se...

玩轉Linux 神級工具 sed awk

這裡是我在網上書上收集的相關資料,因為這兩個工具很有名也很重要,所以這些資料會幫助我更好的了解和熟悉它們。在 sed and awk 一書中 1.2 a stream editor 的解釋是 sed本質上是乙個編輯器,但是它是非互動式的,這點與vim不同 同時它又是面向字元流的,輸入的字元流經過se...

PHP 神盾解密工具

前兩天分析了神盾的解密過程所用到的知識點,昨晚我把工具整理了下,順便用神盾加密了。這都是昨天說好的,下面看下呼叫方法吧。然後解壓放到乙個資料夾裡,把你要解密的檔案也放進去。然後新建乙個 decode.php 寫 require decryption.php decryption code.php 執...