Python
是一種廣泛使用的編程語言,以其簡潔和可讀性著稱。在開發和調試過程中,遇到錯誤和問題是不可避免的。Python
為此提供了一個強大的調試工具——Pdb(Python Debugger)
。
Pdb
是Python
標準庫中自帶的調試器,可以幫助開發者跟蹤代碼執行、查看變量值、設置斷點等功能。
1. 啟動 pdb 調試
方法一:命令行啟動
python -m pdb your_script.py
程序會從第一行開始暫停,進入 pdb
調試模式。
方法二:代碼中插入斷點
在需要調試的位置插入以下代碼:
import pdb; pdb.set_trace() # Python 3.7+ 可簡寫為 breakpoint()
運行腳本時,程序會在 pdb.set_trace()
處暫停。
2. 常用命令
命令 | 簡寫 | 說明 |
---|---|---|
next | n | 執行下一行(不進入函數內部) |
step | s | 進入函數內部 |
continue | c | 繼續執行,直到下一個斷點或程序結束 |
list | l | 顯示當前代碼位置周圍的代碼 |
print | p | 打印變量值,例如 p variable |
break | b | 設置斷點,例如 b 10 (第10行)或 b function_name |
where | w | 顯示當前調用棧(即程序執行到此處的位置路徑) |
return | r | 執行到當前函數返回 |
quit | q | 強制退出調試 |
help | h | 查看命令幫助 |
3. 高級用法
條件斷點
b 20, condition # 在第20行設置條件斷點,當條件滿足時暫停
# 示例:b 10, x > 5 # 當變量 x 大于5時在第10行暫停
修改變量
p x = 10 # 在調試時修改變量 x 的值為10
查看命令歷史
按 Enter
鍵可重復執行上一個命令。
4. 示例調試流程
假設有以下腳本 demo.py
:
def add(a, b):result = a + breturn resultx = 5
y = 10
import pdb; pdb.set_trace() # 在此處暫停
total = add(x, y)
print(total)
調試步驟:
- 運行腳本,程序在
pdb.set_trace()
處暫停。 - 輸入
n
執行下一行(此時total = add(x, y)
還未執行)。 - 輸入
s
進入add
函數內部。 - 輸入
p result
查看result
的值。 - 輸入
c
繼續執行,直到程序結束。
5. pdb.pm的使用
pdb.pm()
是 Python
調試器 pdb
中一個非常有用的功能,它用于在程序拋出異常(未被捕獲的異常)后,自動進入調試模式,并定位到異常發生的堆棧幀(即錯誤發生的具體位置)。
def divide(a, b):return a / b
try:result = divide(5, 0)
except Exception as e:import pdb; pdb.pm() # 捕獲異常后手動進入調試
6. 小技巧
- 交互式執行:在調試過程中可以直接輸入變量名或表達式,例如直接輸入
x
查看其值。 - 斷點管理:使用
break
查看所有斷點,clear
刪除斷點。 - 跳過代碼塊:用
until
跳出循環(例如until 15
執行到第15行)。
通過 pdb
可以逐步跟蹤代碼邏輯,檢查變量狀態,快速定位問題。熟練后可以結合 IDE 的圖形化調試工具(如 VS Code、PyCharm)提升效率。