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

        共 2866字,需瀏覽 6分鐘

         ·

        2021-03-16 10:40

        賈浩楠 發(fā)自 凹非寺
        量子位 報(bào)道 | 公眾號(hào) QbitAI

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

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

        通過(guò)編譯器一行行地去找bug,太浪費(fèi)時(shí)間。

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

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

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

        有了這個(gè)神器,今后debug也會(huì)和寫代碼一樣流暢高效。

        “賽博大腦”幫你debug

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

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

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

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

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

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

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

        比方說(shuō),你想找出為什么返回值是錯(cuò)誤的。通過(guò)看圖,就可以對(duì)導(dǎo)致返回值的原因有了一個(gè)大概的了解。

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

        只要?jiǎng)觿?dòng)鼠標(biāo)就能找到問(wèn)題,誰(shuí)還會(huì)去用麻煩的編譯器呢?

        除了流程和變量跟蹤,賽博大腦還能對(duì)目標(biāo)進(jìn)行檢查。

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

        啟動(dòng)后,Cyberbrain會(huì)自動(dòng)打開一個(gè)devtools窗口。

        當(dāng)你把鼠標(biāo)懸停在一個(gè)變量上時(shí),它的值就會(huì)被記錄在devtools控制臺(tái)中。

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

        幾乎所有的Python調(diào)試器(PyCharm、VS Code等)都會(huì)截?cái)鄥?shù),無(wú)法顯示一個(gè)大列表中的每個(gè)元素,但Cyberbrain不會(huì)這樣做,除非你明確告訴它。

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

        ?如何安裝使用

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

        安裝只需要通過(guò)一句話指令:

        pip install Cyberbraincode —install-extension laike9m.Cyberbrain

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

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

        在使用過(guò)程中,假如你想追蹤一個(gè)函數(shù)“foo”,可以使用@trace指令實(shí)現(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可以保持你的工作流程不變。運(yùn)行一個(gè)程序(從 vscode 或命令行,都可以),一個(gè)新的面板將被打開,程序執(zhí)行情況全部以可視化展示:

        使用Cyberbrain,還有幾點(diǎn)需要注意。

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

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

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

        作者介紹

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

        laike9m是清華校友,在博客中自述曾擔(dān)任清華大學(xué)推理協(xié)會(huì)會(huì)長(zhǎng)。此外還是重度二次元愛(ài)好者。

        除了Cyberbrain,他還組織了一檔播客節(jié)目,名字叫捕蛇者說(shuō),Pythonhunter。

        圖片: https://uploader.shimo.im/f/Ks0rqxVvzEZrPsfE.png

        Cyberbrain項(xiàng)目地址:
        https://github.com/laike9m/Cyberbrain

        laike9m主頁(yè):
        https://laike9m.com/blog/

        播客地址:
        https://pythonhunter.org/

        推薦閱讀:

        入門: 最全的零基礎(chǔ)學(xué)Python的問(wèn)題  | 零基礎(chǔ)學(xué)了8個(gè)月的Python  | 實(shí)戰(zhàn)項(xiàng)目 |學(xué)Python就是這條捷徑


        干貨:爬取豆瓣短評(píng),電影《后來(lái)的我們》 | 38年NBA最佳球員分析 |   從萬(wàn)眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個(gè)海量小姐姐素描圖 |


        趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


        AI: 會(huì)做詩(shī)的機(jī)器人 | 給圖片上色 | 預(yù)測(cè)收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影


        年度爆款文案



        點(diǎn)這里,直達(dá)菜鳥學(xué)PythonB站?。?/span>

        瀏覽 59
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 男人天堂1024 | 国产淫色视频 | 围产精品久久久 | 久久精品视频一区 | 永久免费处破女A片 |