Python在debug方面的支持還是不錯(cuò)的,在明確代碼意義的情況下,通過(guò)log、print和assert分析錯(cuò)誤原因,配合單元測(cè)試可以很高效。然而,實(shí)際工作中大量代碼很可能出自他人之手,這種情況下,使用debugger就顯得更加高效了。
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)龍亭,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108PDB
如果你熟悉命令行調(diào)試工具(例如gdb、lldb),那么使用Python中的PDB將獲得非常好的體驗(yàn),PDB不僅支持項(xiàng)目啟動(dòng)時(shí)進(jìn)行調(diào)用,也支持在Python shell中交互式調(diào)試;功能上,支持?jǐn)帱c(diǎn)、步進(jìn)、異常捕獲和解決、變量查看、變量改寫、棧查看甚至字節(jié)碼查看等。
舉個(gè)PDB斷點(diǎn)調(diào)試的例子:
用文本編輯器新建一個(gè)文檔,就命名為debug1.py吧,輸入最簡(jiǎn)單的Python代碼片段:
然后運(yùn)行這個(gè)腳本,Windows下面這樣運(yùn)行 :
python?debug1.py
然后執(zhí)行到pdb.set_trace()這句后會(huì)自動(dòng)進(jìn)入斷點(diǎn)調(diào)試模式,屏幕會(huì)顯示類似的信息:
PDB顯示目前的斷點(diǎn)位置,然后你就可以使用PDB調(diào)試命令了。
Tips:其他常用命令有:
pp,打印
n,下一步,執(zhí)行下一步
s,步進(jìn),一步步的執(zhí)行
l,列出,顯示斷點(diǎn)周圍的源代碼
c,繼續(xù),繼續(xù)程序的運(yùn)行
r,返回,繼續(xù)直到當(dāng)前函數(shù)返回
由PDB引入的VIM、Emacs工具都能很好地實(shí)現(xiàn)類似lldb和gdb的效果。同時(shí),結(jié)合IPython這一擴(kuò)展功能shell,其中的魔法命令能夠更好地幫助程序調(diào)試。這是一般*nix環(huán)境下常見的調(diào)試組合,配合配置良好的文本編輯工具都能實(shí)現(xiàn)不錯(cuò)的類IDE體驗(yàn)。PDB更能進(jìn)行遠(yuǎn)程調(diào)試,即對(duì)遠(yuǎn)端(如服務(wù)器上正在運(yùn)行著的Python代碼)進(jìn)行調(diào)試。幾乎所有的debugger工具都是在PDB的功能基礎(chǔ)上進(jìn)行用戶界面上的提升。
此外,對(duì)于部分框架,尤其是Web框架,進(jìn)行調(diào)試往往需要結(jié)合具體的上下文環(huán)境(例如Django的開發(fā)調(diào)試測(cè)試需要上下文環(huán)境等),PDB交互式調(diào)試可以直接掛載在對(duì)應(yīng)的交互環(huán)境中(如Django shell)。
Pudb
如果你覺(jué)得這樣太原始,那么可以嘗試pudb,它是基于控制臺(tái)的debug圖形化debugger工具,稍微比pdb直觀一點(diǎn),但僅可以在Linux下運(yùn)行。
這個(gè)圖形界面有點(diǎn)原始,不支持鼠標(biāo),所以不要用鼠標(biāo)點(diǎn)。
如果你更習(xí)慣于IDE的整體調(diào)試,也沒(méi)有問(wèn)題。很多支持Python的IDE,調(diào)試功能都十分強(qiáng)大,甚至輕量級(jí)編輯器也都具備完善的調(diào)試功能。接下來(lái)簡(jiǎn)單介紹幾款圖形化的IDE工具:
Visual Studio Code
VSC作為一個(gè)跨平臺(tái)的重量級(jí)文本編輯器以及輕量級(jí)IDE,如今已經(jīng)得到了越來(lái)越多開發(fā)者的喜愛(ài),而Anaconda作為Python發(fā)行版集成環(huán)境,已將VSC作為推薦開發(fā)工具。
VSCode量級(jí)較輕,但只需要安裝一個(gè)Python語(yǔ)言支持工具,搖身一變就能成為全功能Python IDE,智能感知、補(bǔ)全、重構(gòu)、查找定義代碼段等編輯功能一應(yīng)俱全,而且調(diào)試功能也十分完整,能在調(diào)試模式中涵蓋PDB的全部功能,并能在圖形界面下簡(jiǎn)單地進(jìn)行操作。
如果非要說(shuō)一個(gè)VSCode的弱點(diǎn)的話,應(yīng)該是其調(diào)試工具、解釋器的配置沒(méi)有具體的配置頁(yè)面,需要通過(guò)配置文件來(lái)進(jìn)行修改,這一點(diǎn)或許會(huì)給新手帶來(lái)困惑。
Visual Studio
VS號(hào)稱宇宙第一IDE,其Python開發(fā)工具自然也能帶來(lái)非常好的體驗(yàn)。在VS2017中,Python開發(fā)環(huán)境就已經(jīng)是可選擇的安裝選項(xiàng)了。對(duì)于許多曾經(jīng)使用VS在Windows下進(jìn)行其他語(yǔ)言開發(fā)工作的人而言,熟悉的快捷鍵、清晰的環(huán)境及不會(huì)特別夸張的資源消耗絕對(duì)是VS的加分點(diǎn)。
當(dāng)然,其debugger功能也是一應(yīng)俱全的。
Spyder
作為開源社區(qū)貢獻(xiàn)的由Python編寫的跨平臺(tái)IDE,Spyder以輕量、便捷、高度集成為賣點(diǎn)。Spyder允許在多種不同的預(yù)設(shè)模式下工作,例如類似Matlab式的科學(xué)計(jì)算交互界面,以及其他應(yīng)用工程開發(fā)形式的界面環(huán)境;在編碼過(guò)程中Spyder可實(shí)時(shí)提示文檔、交互式運(yùn)行、調(diào)試時(shí)顯示全部變量表,并可一鍵可視化等,對(duì)于數(shù)據(jù)分析而言具有很好的便利性;同樣,它也支持步進(jìn)跟蹤等一系列PDB所提供的調(diào)試功能。若是說(shuō)缺點(diǎn),界面本身不具時(shí)尚感,算吧?
Eclipse + PyDev
Eclipse是最輝煌的開源跨平臺(tái)多語(yǔ)言IDE之一,有著大量用戶的簇?fù)?,自然它也為Python提供了支持。PyDev是Eclipse上的Python開發(fā)工具包,提供完整IDE功能,也包含所述的斷點(diǎn)、步進(jìn)等調(diào)試功能,Eclipse + PyDev可能是最完整的開源Python IDE解決方案。
PyCharm
或許每一個(gè)Python開發(fā)者對(duì)于PyCharm都不陌生,作為目前最好用的Python IDE,PyCharm保持著一個(gè)季度一更新的版本迭代頻率,每次更新都能帶來(lái)功能上的驚喜,并且無(wú)論你是數(shù)據(jù)分析、應(yīng)用開發(fā)者抑或是服務(wù)端開發(fā),PyCharm都能提供最好的體驗(yàn)。它是最智能的IDE,能夠通過(guò)你引用的模塊推斷提醒你是否需要進(jìn)入科學(xué)計(jì)算模式;能夠解析代碼中存在的其它語(yǔ)言片段(如字符串中的SQL、HTML、JS等);可以結(jié)合Jupyter Notebook進(jìn)行開發(fā)和展示;能夠通過(guò)代碼生成UML圖,包含圖形化的單元測(cè)試、覆蓋率分析、性能分析工具和并行分析工具;能夠遠(yuǎn)程調(diào)試、一鍵部署,能深入結(jié)合各種常見框架提供更好的支持;也能方便地進(jìn)行圖形化debug。
PyCharm的缺點(diǎn)?應(yīng)該是在設(shè)置好解釋器后,PyCharm將會(huì)對(duì)環(huán)境中所有的site-package進(jìn)行解析和抽取,以供智能感知自動(dòng)補(bǔ)全使用,在這期間IDE對(duì)內(nèi)存和CPU的占用都非常大,但如若您的電腦用一塊高速SSD作為硬盤,同時(shí)又有足夠大的內(nèi)存,一切便會(huì)顯得非常完美。
與Visual Studio類似,PyCharm是商業(yè)軟件,雖然它也提供了免費(fèi)的社區(qū)版,但相比之下,社區(qū)版的PyCharm受限的功能較多。不過(guò),如果你還是一名學(xué)生,便可以利用自己的教育郵箱申請(qǐng)免費(fèi)的教育版學(xué)生授權(quán),體驗(yàn)與Pro版一致的全部功能。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。