當前位置:
首頁 > 知識 > Python 3.7的新內置斷點快速一覽

Python 3.7的新內置斷點快速一覽

Python 3.7的新內置斷點快速一覽

Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。

與其他語言相比,Python中的調試總是比較「尷尬」。

大多數開發人員採取的方法是從標準庫中導入pdb模塊,並運行pdb.set_trace從而在執行過程中進入控制台互動式調試會話。但這種方法存在一些重大問題:

  1. 每次都要輸入import pdb; pdb.set_trace比較麻煩。當你寫了100多次後你可能會有肌肉記憶,但對新手來講比較困難。

  2. pdb不是唯一的調試器,只是最基本的。除了pdb以外還有很多更好的選擇。

  3. 如果你寫的不是控制台應用程序會怎麼樣呢?如果要在伺服器或線程任務中設置斷點,怎麼開啟調試會話呢?

新的斷點方法

首先斷點設置方法是一個函數,而不是關鍵字。所以你希望的是只在需要的那一行代碼上加上斷點,其他沒有任何多餘的操作。你需要一個breakpoint方法,預設實現會導入pdb和call。

Python 3.7的新內置斷點快速一覽

這會在命令行上產生一個pdb會話。

Python 3.7的新內置斷點快速一覽

這已經比目前版本Python中的實現更直觀了。

但是等等,還有問題

使用PYTHONBREAKPOINT環境變數可以禁用新的斷點方法。所以如果你確實在代碼中設置了斷點,並且你只希望它執行一次,你可以將環境變數設為0。(輸入PYTHONBREAKPOINT=pudb.set_trace python3.7 debugger.py)

這樣再次調用相同的腳本就只是完成執行並跳過調用斷點。

Python 3.7的新內置斷點快速一覽

但是再等等,還有問題

PYTHONBREAKPOINT環境變數可以設置為可調用的名稱,比如可以啟動一個第三方調試庫里調試會話的可調用函數。

pudb就是這樣一個庫。pudb是一個互動式控制台調試器,其關鍵字映射與pdb類似,但使用起來更容易。pudb已經存在很長時間了,支持Python2和3。

要使用pudb作為調試器,首先確保已經安裝好它(通過pip install pudb),然後再將環境變數設為pudb.set_trace。

在命令行調用如下:PYTHONBREAKPOINT=pudb.set_trace python3.7 debugger.py

這相當於用breakpoint方法替換import pudb; pudb.set_trace

Python 3.7的新內置斷點快速一覽

一切都很簡潔。

遠程調試和線程怎麼辦呢?

這個新的斷點功能開啟了一個有趣的用例。

在開發跨多個伺服器或線程的分散式應用程序時,你可以使用本地調試器,如pudb。

當你部署到測試環境時,你可能不會從cli執行,而是從gevent或WSGI等進行調用。這是將Web服務或測試環境中的環境變數更改為允許遠程連接的另一調試器的情況。

你可以使用web-pdb。 Web-pdb是一個遠程調試器,可在斷點觸發時啟動Web伺服器,並可通過瀏覽器遠程連接互動式調試會話。

如果你pip install web-pdb,那麼你可以在調用breakpoint函數的時候設置export PYTHONBREAKPOINT="web_pdb.set_trace"(無論它是否是後台進程),默認情況下你可以在埠5555上連接到服務,你將會看到這個界面:

Python 3.7的新內置斷點快速一覽


英文原文:https://ogmcsrgk5.qnssl.com/vcdn/1/%E4%BC%98%E8%B4%A8%E6%96%87%E7%AB%A0%E9%95%BF%E5%9B%BE/python-3-7s-new-builtin-breakpoint-a-quick-tour-4f1aebc444c.png
譯者:β

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

Requests 3.0要開始開發了,但是開發團隊沒錢了
Python3的range比Python2的xrange功能更強大

TAG:Python部落 |