使用Python內建的pdb和breakpoint()進行程式debug

為何使用pdb和breakpoint()這樣的DEBUG工具

主要有兩種不同的型式:

#Python 3.7版本之前
import pdb;pdb.set_trace() #加在想要設定breakpoint的地方
#Python 3.7之後
breakpoint() #加在想要設定breakpoint的地方

可能會比較常用到的指令:

範例程式
# 當我們在程式碼加入這些breakpoint之後,當程式碼執行到breakpoint這一行時,就會看到(Pdb)出現,這時候,我們可以透過以下指令來了解程式碼的各個變數所表達的內容b— 新增breakpointp — 印出變數值 # p 變數名稱,例如 p varNamel — 印出目前所在 function/frame上下 11 行的程式碼ll — 印出目前所在 function/frame 的所有程式碼c — 持續執行程式碼直到遇到下一個中斷點unt — 持續執行程式直到某一行 #q — 離開 pdb

一些想法:

之前在寫PyTorch的時候,常常遇到一些BUG,每次想要DEBUG時,往往都需要重新執行程式,在「改程式<=>看執行結果」這個迴圈不斷循環,我覺得使用pdb或是breakpoint()這樣的方法,可以在未來處理BUG的時候,省下不少的時間。因為深度學習的程式有時候一旦執行下去,螢幕所output出來的結果很快就會迅速掃過,如果眼睛不夠銳利,可能很快就遺失了關鍵資訊,需要再度執行,浪費不少時間,也因此,這樣的DEBUG工具,就顯得非常重要。

--

--

Machine Learning | Deep Learning | https://linktr.ee/yanwei

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store