谷歌大神又一開源神器!代碼調試不選它選誰?
開源最前線(ID:OpenSourceTop) 猿妹 編譯
鏈接:https://medium.com/analytics-vidhya/cyberbrain-python-debugging-redefined-1db4c47a4d32
如果調試是 Debug 的必經之路,那麼編程應該將它考慮在內。今天猿妹就和大家分享一個代碼調試神器——Cyberbrain。
Cyberbrain 是一個免費開源的 Python 代碼調試解決方案,它可視化程序執行以及每個變量的變化方式,讓程序員免受調試之苦。主要具有以下 3 個特性:
-
回溯變量更改
-
查看程序執行的每個狀態,包括變量的值
-
循環調試
Cyberbrain 並不會改變你的工作流程,運行一個程序(從 vscode 或命令行,都可以),一個新的面板將被打開,程序執行情況全部以可視化展示。
Cyberbrain 如何安裝
Cyberbrain 由一個 Python 庫和各種編輯器 / IDE 集成組成。當前,它支持 VS Code。要安裝 Cyberbrain:
1pip install cyberbrain
2code --install-extension laike9m.cyberbrain
3
4
你也可以直接從 VS Code 上安裝。
如何使用
假設你想跟蹤一個函數 foo,只需用 @trace 以下命令裝飾它:
1from cyberbrain import trace
2# As of now, you can only have one @trace decorator in the whole program.
3# We may change this in version 2.0, see https://github.com/laike9m/Cyberbrain/discussions/73
4@trace # Disable tracing with `@trace(disabled=True)`
5def foo():
6 ...
7
8
以下 gif 演示了工作流程:
使用 Cyberbrain,可能有哪些意外
Cyberbrain 可能與其他調試器發生衝突。如果設置斷點並使用 VSC 的調試器,則 Cyberbrain 可能無法正常運行。
如果你打開了多個 VS Code 窗口,則將始終在第一個窗口中創建跟蹤圖。
當有多個裝飾器時,應將其 @trace 作爲最裏面的裝飾器。
1@app.route("/")
2@trace
3def hello_world():
4 x = [1, 2, 3]
5 return "Hello, World!"
6
7
賽博大腦——數據流分析和變量跟蹤
與其他調試器不同,Cyberbrain 可以顯示準確的數據流,並且可以在程序的每個狀態中持續存在。你不僅不需要記住任何事情,甚至你都不需要逐步執行操作,這樣一來就可以節省大量調試時間。
下圖是使用 Cyberbrain 進行調試的方法:
假如你想找出返回值錯誤的原因。通過查看圖表,你已經對導致返回值的原因有了一個大概的瞭解。
接下來,將鼠標懸停在 “返回” 節點上,所有相關值都會顯示出來,形成從函數開始到結束的跟蹤路徑:
只要動動鼠標就能找到問題,誰還會去用編譯器呢?
目標檢查
如果現在有一個大列表,但它無法與圖匹配,如何使用工具來檢查它的值?devtools 可用於檢查值,如下所示。
啓動後,Cyberbrain 會自動打開 devtools 窗口。將鼠標懸停在變量上時,其值將記錄在 devtools 控制檯中。因此,在這種情況下,儘管沒有足夠的空間在跟蹤圖中顯示整個列表,但是您仍然可以從 devtools 中檢查其值。
幾乎所有的 Python 調試器(PyCharm,VS Code 等)都會截取參數,並且無法顯示大列表中的每個元素。但是我們相信 “細節決定成敗”,每條信息可能都是有用的,不應忽略。因此,除非你明確指示,Cyberbrain 不會截取參數。
循環
Cyberbrain 還有另一個獨特的功能,你可以在調試時設置循環計數器。
由於實現非常複雜,因此存在一些已知的錯誤,不過隨着更新,應該會變得更好。
目前,Cyberbrain 已經在 Github 上標星 1.5K,累計分支 64 個。(Github 地址:https://github.com/laike9m/Cyberbrain)
最後,值得一提的是,創建者 laike9m 畢業於清華大學,谷歌軟件工程師,目前全職開發 Cyberbrain 工具
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/nduVZVuvPAbUvzWKI4lHZw