您好,登錄后才能下訂單哦!
Python在debug方面的支持還是不錯的,在明確代碼意義的情況下,通過log、print和assert分析錯誤原因,配合單元測試可以很高效。然而,實際工作中大量代碼很可能出自他人之手,這種情況下,使用debugger就顯得更加高效了。
PDB
如果你熟悉命令行調試工具(例如gdb、lldb),那么使用Python中的PDB將獲得非常好的體驗,PDB不僅支持項目啟動時進行調用,也支持在Python shell中交互式調試;功能上,支持斷點、步進、異常捕獲和解決、變量查看、變量改寫、棧查看甚至字節碼查看等。
舉個PDB斷點調試的例子:
用文本編輯器新建一個文檔,就命名為debug1.py吧,輸入最簡單的Python代碼片段:
然后運行這個腳本,Windows下面這樣運行 :
python?debug1.py
然后執行到pdb.set_trace()這句后會自動進入斷點調試模式,屏幕會顯示類似的信息:
PDB顯示目前的斷點位置,然后你就可以使用PDB調試命令了。
Tips:其他常用命令有:
pp,打印
n,下一步,執行下一步
s,步進,一步步的執行
l,列出,顯示斷點周圍的源代碼
c,繼續,繼續程序的運行
r,返回,繼續直到當前函數返回
由PDB引入的VIM、Emacs工具都能很好地實現類似lldb和gdb的效果。同時,結合IPython這一擴展功能shell,其中的魔法命令能夠更好地幫助程序調試。這是一般*nix環境下常見的調試組合,配合配置良好的文本編輯工具都能實現不錯的類IDE體驗。PDB更能進行遠程調試,即對遠端(如服務器上正在運行著的Python代碼)進行調試。幾乎所有的debugger工具都是在PDB的功能基礎上進行用戶界面上的提升。
此外,對于部分框架,尤其是Web框架,進行調試往往需要結合具體的上下文環境(例如Django的開發調試測試需要上下文環境等),PDB交互式調試可以直接掛載在對應的交互環境中(如Django shell)。
Pudb
如果你覺得這樣太原始,那么可以嘗試pudb,它是基于控制臺的debug圖形化debugger工具,稍微比pdb直觀一點,但僅可以在Linux下運行。
這個圖形界面有點原始,不支持鼠標,所以不要用鼠標點。
如果你更習慣于IDE的整體調試,也沒有問題。很多支持Python的IDE,調試功能都十分強大,甚至輕量級編輯器也都具備完善的調試功能。接下來簡單介紹幾款圖形化的IDE工具:
Visual Studio Code
VSC作為一個跨平臺的重量級文本編輯器以及輕量級IDE,如今已經得到了越來越多開發者的喜愛,而Anaconda作為Python發行版集成環境,已將VSC作為推薦開發工具。
VSCode量級較輕,但只需要安裝一個Python語言支持工具,搖身一變就能成為全功能Python IDE,智能感知、補全、重構、查找定義代碼段等編輯功能一應俱全,而且調試功能也十分完整,能在調試模式中涵蓋PDB的全部功能,并能在圖形界面下簡單地進行操作。
如果非要說一個VSCode的弱點的話,應該是其調試工具、解釋器的配置沒有具體的配置頁面,需要通過配置文件來進行修改,這一點或許會給新手帶來困惑。
Visual Studio
VS號稱宇宙第一IDE,其Python開發工具自然也能帶來非常好的體驗。在VS2017中,Python開發環境就已經是可選擇的安裝選項了。對于許多曾經使用VS在Windows下進行其他語言開發工作的人而言,熟悉的快捷鍵、清晰的環境及不會特別夸張的資源消耗絕對是VS的加分點。
當然,其debugger功能也是一應俱全的。
Spyder
作為開源社區貢獻的由Python編寫的跨平臺IDE,Spyder以輕量、便捷、高度集成為賣點。Spyder允許在多種不同的預設模式下工作,例如類似Matlab式的科學計算交互界面,以及其他應用工程開發形式的界面環境;在編碼過程中Spyder可實時提示文檔、交互式運行、調試時顯示全部變量表,并可一鍵可視化等,對于數據分析而言具有很好的便利性;同樣,它也支持步進跟蹤等一系列PDB所提供的調試功能。若是說缺點,界面本身不具時尚感,算吧?
Eclipse + PyDev
Eclipse是最輝煌的開源跨平臺多語言IDE之一,有著大量用戶的簇擁,自然它也為Python提供了支持。PyDev是Eclipse上的Python開發工具包,提供完整IDE功能,也包含所述的斷點、步進等調試功能,Eclipse + PyDev可能是最完整的開源Python IDE解決方案。
PyCharm
或許每一個Python開發者對于PyCharm都不陌生,作為目前最好用的Python IDE,PyCharm保持著一個季度一更新的版本迭代頻率,每次更新都能帶來功能上的驚喜,并且無論你是數據分析、應用開發者抑或是服務端開發,PyCharm都能提供最好的體驗。它是最智能的IDE,能夠通過你引用的模塊推斷提醒你是否需要進入科學計算模式;能夠解析代碼中存在的其它語言片段(如字符串中的SQL、HTML、JS等);可以結合Jupyter Notebook進行開發和展示;能夠通過代碼生成UML圖,包含圖形化的單元測試、覆蓋率分析、性能分析工具和并行分析工具;能夠遠程調試、一鍵部署,能深入結合各種常見框架提供更好的支持;也能方便地進行圖形化debug。
PyCharm的缺點?應該是在設置好解釋器后,PyCharm將會對環境中所有的site-package進行解析和抽取,以供智能感知自動補全使用,在這期間IDE對內存和CPU的占用都非常大,但如若您的電腦用一塊高速SSD作為硬盤,同時又有足夠大的內存,一切便會顯得非常完美。
與Visual Studio類似,PyCharm是商業軟件,雖然它也提供了免費的社區版,但相比之下,社區版的PyCharm受限的功能較多。不過,如果你還是一名學生,便可以利用自己的教育郵箱申請免費的教育版學生授權,體驗與Pro版一致的全部功能。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。