Python程序如何高效地調(diào)試?-創(chuàng)新互聯(lián)

Python在debug方面的支持還是不錯的,在明確代碼意義的情況下,通過log、print和assert分析錯誤原因,配合單元測試可以很高效。然而,實際工作中大量代碼很可能出自他人之手,這種情況下,使用debugger就顯得更加高效了。

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)龍亭,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

Python 程序如何高效地調(diào)試?

一、在控制臺下進行程序調(diào)試

PDB

如果你熟悉命令行調(diào)試工具(例如gdb、lldb),那么使用Python中的PDB將獲得非常好的體驗,PDB不僅支持項目啟動時進行調(diào)用,也支持在Python shell中交互式調(diào)試;功能上,支持斷點、步進、異常捕獲和解決、變量查看、變量改寫、棧查看甚至字節(jié)碼查看等。

舉個PDB斷點調(diào)試的例子:

用文本編輯器新建一個文檔,就命名為debug1.py吧,輸入最簡單的Python代碼片段:

Python 程序如何高效地調(diào)試?

然后運行這個腳本,Windows下面這樣運行 :

python?debug1.py

然后執(zhí)行到pdb.set_trace()這句后會自動進入斷點調(diào)試模式,屏幕會顯示類似的信息:

Python 程序如何高效地調(diào)試?

PDB顯示目前的斷點位置,然后你就可以使用PDB調(diào)試命令了。

Python 程序如何高效地調(diào)試?

Tips:其他常用命令有:

pp,打印

n,下一步,執(zhí)行下一步

s,步進,一步步的執(zhí)行

l,列出,顯示斷點周圍的源代碼

c,繼續(xù),繼續(xù)程序的運行

r,返回,繼續(xù)直到當(dāng)前函數(shù)返回

由PDB引入的VIM、Emacs工具都能很好地實現(xiàn)類似lldb和gdb的效果。同時,結(jié)合IPython這一擴展功能shell,其中的魔法命令能夠更好地幫助程序調(diào)試。這是一般*nix環(huán)境下常見的調(diào)試組合,配合配置良好的文本編輯工具都能實現(xiàn)不錯的類IDE體驗。PDB更能進行遠程調(diào)試,即對遠端(如服務(wù)器上正在運行著的Python代碼)進行調(diào)試。幾乎所有的debugger工具都是在PDB的功能基礎(chǔ)上進行用戶界面上的提升。

此外,對于部分框架,尤其是Web框架,進行調(diào)試往往需要結(jié)合具體的上下文環(huán)境(例如Django的開發(fā)調(diào)試測試需要上下文環(huán)境等),PDB交互式調(diào)試可以直接掛載在對應(yīng)的交互環(huán)境中(如Django shell)。

Pudb

如果你覺得這樣太原始,那么可以嘗試pudb,它是基于控制臺的debug圖形化debugger工具,稍微比pdb直觀一點,但僅可以在Linux下運行。

Python 程序如何高效地調(diào)試?

這個圖形界面有點原始,不支持鼠標,所以不要用鼠標點。

二、圖形界面下的程序調(diào)試

如果你更習(xí)慣于IDE的整體調(diào)試,也沒有問題。很多支持Python的IDE,調(diào)試功能都十分強大,甚至輕量級編輯器也都具備完善的調(diào)試功能。接下來簡單介紹幾款圖形化的IDE工具:

Visual Studio Code

VSC作為一個跨平臺的重量級文本編輯器以及輕量級IDE,如今已經(jīng)得到了越來越多開發(fā)者的喜愛,而Anaconda作為Python發(fā)行版集成環(huán)境,已將VSC作為推薦開發(fā)工具。

Python 程序如何高效地調(diào)試?

VSCode量級較輕,但只需要安裝一個Python語言支持工具,搖身一變就能成為全功能Python IDE,智能感知、補全、重構(gòu)、查找定義代碼段等編輯功能一應(yīng)俱全,而且調(diào)試功能也十分完整,能在調(diào)試模式中涵蓋PDB的全部功能,并能在圖形界面下簡單地進行操作。

如果非要說一個VSCode的弱點的話,應(yīng)該是其調(diào)試工具、解釋器的配置沒有具體的配置頁面,需要通過配置文件來進行修改,這一點或許會給新手帶來困惑。

Visual Studio

VS號稱宇宙第一IDE,其Python開發(fā)工具自然也能帶來非常好的體驗。在VS2017中,Python開發(fā)環(huán)境就已經(jīng)是可選擇的安裝選項了。對于許多曾經(jīng)使用VS在Windows下進行其他語言開發(fā)工作的人而言,熟悉的快捷鍵、清晰的環(huán)境及不會特別夸張的資源消耗絕對是VS的加分點。

Python 程序如何高效地調(diào)試?

當(dāng)然,其debugger功能也是一應(yīng)俱全的。

Spyder

作為開源社區(qū)貢獻的由Python編寫的跨平臺IDE,Spyder以輕量、便捷、高度集成為賣點。Spyder允許在多種不同的預(yù)設(shè)模式下工作,例如類似Matlab式的科學(xué)計算交互界面,以及其他應(yīng)用工程開發(fā)形式的界面環(huán)境;在編碼過程中Spyder可實時提示文檔、交互式運行、調(diào)試時顯示全部變量表,并可一鍵可視化等,對于數(shù)據(jù)分析而言具有很好的便利性;同樣,它也支持步進跟蹤等一系列PDB所提供的調(diào)試功能。若是說缺點,界面本身不具時尚感,算吧?

Python 程序如何高效地調(diào)試?

Eclipse + PyDev

Eclipse是最輝煌的開源跨平臺多語言IDE之一,有著大量用戶的簇擁,自然它也為Python提供了支持。PyDev是Eclipse上的Python開發(fā)工具包,提供完整IDE功能,也包含所述的斷點、步進等調(diào)試功能,Eclipse + PyDev可能是最完整的開源Python IDE解決方案。

Python 程序如何高效地調(diào)試?

PyCharm

或許每一個Python開發(fā)者對于PyCharm都不陌生,作為目前最好用的Python IDE,PyCharm保持著一個季度一更新的版本迭代頻率,每次更新都能帶來功能上的驚喜,并且無論你是數(shù)據(jù)分析、應(yīng)用開發(fā)者抑或是服務(wù)端開發(fā),PyCharm都能提供最好的體驗。它是最智能的IDE,能夠通過你引用的模塊推斷提醒你是否需要進入科學(xué)計算模式;能夠解析代碼中存在的其它語言片段(如字符串中的SQL、HTML、JS等);可以結(jié)合Jupyter Notebook進行開發(fā)和展示;能夠通過代碼生成UML圖,包含圖形化的單元測試、覆蓋率分析、性能分析工具和并行分析工具;能夠遠程調(diào)試、一鍵部署,能深入結(jié)合各種常見框架提供更好的支持;也能方便地進行圖形化debug。

PyCharm的缺點?應(yīng)該是在設(shè)置好解釋器后,PyCharm將會對環(huán)境中所有的site-package進行解析和抽取,以供智能感知自動補全使用,在這期間IDE對內(nèi)存和CPU的占用都非常大,但如若您的電腦用一塊高速SSD作為硬盤,同時又有足夠大的內(nèi)存,一切便會顯得非常完美。

Python 程序如何高效地調(diào)試?

與Visual Studio類似,PyCharm是商業(yè)軟件,雖然它也提供了免費的社區(qū)版,但相比之下,社區(qū)版的PyCharm受限的功能較多。不過,如果你還是一名學(xué)生,便可以利用自己的教育郵箱申請免費的教育版學(xué)生授權(quán),體驗與Pro版一致的全部功能。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:Python程序如何高效地調(diào)試?-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://muchs.cn/article36/poisg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站內(nèi)鏈、虛擬主機、企業(yè)建站網(wǎng)站制作、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站