1. Debug 無憂!清華校友打造 Python 調(diào)試神器

        共 2363字,需瀏覽 5分鐘

         ·

        2021-03-22 12:32

        轉(zhuǎn)自:量子位

        寫代碼時提筆千行,debug時卻低效抓狂……

        幾乎每個編程者都逃不了這樣的糾結(jié)。

        通過編譯器一行行地去找bug,太浪費時間。

        所以,一位清華校友、谷歌工程師laike9m,便開發(fā)了一個強大的Python調(diào)試工具Cyberbrain

        能夠詳細記錄項目數(shù)據(jù)流、變量、狀態(tài)等等關(guān)鍵信息。

        并且,結(jié)果還會以直觀簡潔的可視化圖片呈現(xiàn)。

        有了這個神器,今后debug也會和寫代碼一樣流暢高效。

        “賽博大腦”幫你debug

        平常你的程序中出現(xiàn)bug時會怎么辦?

        最常規(guī)的辦法是用調(diào)試器,但是你能記住程序中每個步驟發(fā)生什么了嗎?

        這就是傳統(tǒng)方法的缺點:調(diào)試信息無法持久化,要靠程序員去記住它們。

        這款名叫Cyberbrain(賽博大腦)的強大的工具,最亮眼的功能,是回溯代碼中的變量更改歷史,查看程序執(zhí)行的狀態(tài)。

        所以,在你調(diào)試程序或debug時,不需要費幾個小時用編譯器逐行執(zhí)行。

        Cyberbrain會清晰的告訴你流程中都發(fā)生過什么

        Cyberbrain能顯示準確的數(shù)據(jù)流,并保留程序的每個狀態(tài)。程序員不僅不需要記住任何內(nèi)容,甚至不需要逐步執(zhí)行程序,這可以節(jié)省大量調(diào)試時間。

        比方說,你想找出為什么返回值是錯誤的。通過看圖,就可以對導致返回值的原因有了一個大概的了解。

        接下來,將鼠標懸停在 “返回 “節(jié)點上,所有相關(guān)的值都顯示出來了,形成了一個從函數(shù)開始到結(jié)束的跟蹤路徑:

        只要動動鼠標就能找到問題,誰還會去用麻煩的編譯器呢?

        除了流程和變量跟蹤,賽博大腦還能對目標進行檢查。

        如果現(xiàn)在有一個大列表,但它無法與圖匹配,如何使用工具來檢查它的值?

        啟動后,Cyberbrain會自動打開一個devtools窗口。

        當你把鼠標懸停在一個變量上時,它的值就會被記錄在devtools控制臺中。

        所以在這種情況下,雖然沒有足夠的空間在跟蹤圖中顯示整個列表,但你仍然可以從devtools中檢查它的值。

        幾乎所有的 Python 調(diào)試器(PyCharm、VS Code等)都會截斷參數(shù),無法顯示一個大列表中的每個元素,但 Cyberbrain 不會這樣做,除非你明確告訴它。

        最后,Cyberbrain 還能讓用戶在 debug 的同時,設(shè)置循環(huán)計數(shù)器。

        如何安裝使用

        Cyberbrain 由一個 Python 庫和各種編輯器/IDE 集成組成。目前它支持 VS Code 和 Gitpod。

        安裝只需要通過簡單指令:

        pip install cyberbrain
        code --install-extension laike9m.cyberbrain

        同時,作者還提供了在線版的Cyberbrain,可以直接試用:

        https://gitpod.io/#snapshot/91475a9d-4ccf-420a-b0ee-11db084ce689

        在使用過程中,假如你想追蹤一個函數(shù)“foo”,可以使用**@trace**指令實現(xiàn):

        from Cyberbrain import trace

        # As of now, you can only have one @trace decorator in the whole program.
        # We may change this in version 2.0, see https://github.com/laike9m/Cyberbrain/discussions/73

        @trace  # Disable tracing with `@trace(disabled=True)`
        def foo():

        Cyberbrain可以保持你的工作流程不變。運行一個程序(從 vscode 或命令行,都可以),一個新的面板將被打開,程序執(zhí)行情況全部以可視化展示:

        使用Cyberbrain,還有幾點需要注意。

        首先是可能會與其他調(diào)試器發(fā)生沖突。如果你設(shè)置了斷點并使用VSC的調(diào)試器,Cyberbrain可能無法正常工作。一般來說,首選 “不調(diào)試運行”。

        而當你的程序中有多個裝飾器(decorator)時,應該將@trace設(shè)置為最底層的那個。

        此外,目前Cyberbrain還不支持多線程代碼。

        作者介紹

        作者laike9m,谷歌軟件工程師,目前全職開發(fā)Cyberbrain工具。

        laike9m是清華校友,在博客中自述曾擔任清華大學推理協(xié)會會長。此外還是重度二次元愛好者。

        • Cyberbrain項目地址:https://github.com/laike9m/Cyberbrain

        • laike9m主頁:https://laike9m.com/blog/


        - EOF - 


        更多優(yōu)秀開源項目(點擊下方圖片可跳轉(zhuǎn))






        開源前哨

        日常分享熱門、有趣和實用的開源項目。參與維護10萬+star 的開源技術(shù)資源庫,包括:Python, Java, C/C++, Go, JS, CSS, Node.js, PHP, .NET 等

        關(guān)注后獲取

        回復 資源 獲取 10萬+ star 開源資源



        分享、點贊和在看

        支持我們分享更多優(yōu)秀開源項目,謝謝!

        瀏覽 40
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 亚洲最大成人在线视频 | 嗯啊嗯啊视频 | 一边上课一边被老师揉 | 免费在线观看亚洲 | 国产女人夜夜春夜夜高潮 |