python中breakpoint_Python3.7 特色(2)-breakpoint 內建除錯

目錄

前言

基礎使用方法

進階使用方法

停用除錯

第三方模組

前言

很多攻城獅不喜歡除錯,特別是在趕進度時,你只是希望某個功能跑得動...但是在某些狀況下,除錯器是必需品,透過中斷點、追蹤變數,你可能會發現新世界(原來這 code 是這樣跑阿)。

和其他語言比起來,Python 在除錯上不太方便:

你要寫 import pdb; pdb.set_trace() 來設立中斷點,當你寫了 100 次的時候會變成肌肉記憶,不過對於新的開發者來說就不是如此了。

PDB 不是唯一的 Debugger,除了最基本的 PDB 以外還有超級多的選擇。

如果你不是在寫一個 console app 呢?如果中斷點在 server 端或者某個線程中呢?這時候 Debug 的 session 在哪?

Python 3.7 實現了 PEP553,增加了一種新增中斷點的方法,今天的主角—breakpoint

基礎使用方法

首先,breakpoint 是個 function ,不是 continue、break 這種關鍵字

所以你可以在 code 裡面呼叫breakpoint()來設立中斷點,breakpoint 預設的實現方法就是import pdb然後呼叫pdb.set_trace()

import time

print(time.ctime())

breakpoint()

print('Good morning')

接著會在終端機進入一個 pdb 的 session

這個用法直觀多了!

進階用法

PYTHONBREAKPOINT 參數

新的 breakpoint 可以在執行時設定 PYTHONBREAKPOINT 參數,執行時加入 PYTHONBREAKPOINT=value 達到一些的特別功能

暫停除錯

執行時指定 PYTHONBREAKPOINT=0 可以停止除錯執行除錯功能

第三方模組

執行時指定 PYTHONBREAKPOINT='importable.callable',會自動幫你載入 importable 這個套件,然後在每次呼叫 breakpoint() 時,呼叫 callable() 這個 function 來取代

如此一來,如果你想用 pudb(熱門、功能齊全的 debugger)、web-pdb(執行後可以用瀏覽器、遠端來 debug)...等這些第三方套件,就能和 breakpoint() 完美搭配。

例如:pip install web-pdb 安裝完之後,可以用

PYTHONBREAKPOINT='web_pdb.set_trace' python ex1.py

來執行

你就可以用 web-pdb 來取代原生的 pdb,而不用改任何一行 Python code,看了之後都想好好學 debug 了呢(我是很少在用的那一群,哈哈)

也可以在 Python 內,用 os 的系統變數去調整

import os

os.environ['PYTHONBREAKPOINT'] = 'web_pdb.set_trace'

# ...

breakpoint() # import web_pdb; web_pdb.set_trace();

參考資料

系列介紹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值