使用 pdb 的 set_trace 設定 python 程式的中斷點

撰寫 Python 程式時,設定中斷點是研究程式和 debug 時常用的方法。不同的 IDE 有不同的方法設定中斷點,不過大部份的 IDE 都支援用 pdb 的 set_trace 設定中斷點,因此以下彼得潘以 Google Colab 為例,說明如何在 Colab 用 pdb 設定中斷點。

以下彼得潘以 Google Colab 為例,說明如何在 Colab 用 pdb 設定中斷點。

我們以經典的畫星星蘋果程式為例。

content = ""
for _ in range(3):
for _ in range(3):
content += "🍎"
content += "\n"
print(content)

以上程式將印出好想咬一口的三排蘋果。

🍎🍎🍎
🍎🍎🍎
🍎🍎🍎

import pdb,然後在程式要中斷的地方加入 pdb.set_trace()

import pdb 

content = ""
for _ in range(3):
for _ in range(3):
pdb.set_trace()
content += "🍎"
content += "\n"
print(content)

加了中斷點後,程式執行時果然乖乖地暫停,就像人類看到殭屍會暫時停止呼吸一樣。從下圖可看到箭頭指著 content += "🍎",表示它是下一行準備執行的程式。

我們可在 ipdb 的框框輸入指令,比方輸入 p 可印出變數的內容。

輸入 p content 會印出空字串,因此目前尚未加入任何 🍎。

輸入 n 會執行下一行程式。下圖輸入 n 後會執行第七行的content += "🍎",然後箭頭跳到第五行的 for _ in range(3)

此時再輸入 p content,看到了第一個加入的 🍎 。

掌握指令 n & p 後,在程式中斷時,我們可以不斷地輸入 n 執行下一行程式,輸入 p 印出變數的內容。

從下圖可看到輸入多次 n 後,程式跑完了第五行的 for 跟第八行的 content += "\n",回到了第四行的 for,此時的 content 為 🍎🍎🍎\n,我們成功完成第一排的 🍎

若要離開中斷模式,可輸入 q 離開。

--

--

彼得潘的 iOS App Neverland
彼得潘的 iOS App Neverland

Written by 彼得潘的 iOS App Neverland

彼得潘的 Swift iOS App 程式設計入門,文組生的 Swift iOS App 程式設計入門,彼得潘的 Flutter 跨平台 App 程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com

No responses yet