前言
如果你熟悉命令行調(diào)試工具呻粹,如GDB,那么使用Python中的PDB將獲得非常好的體驗苏研,PDB不僅支持項目啟動時進行調(diào)用等浊,也支持在Python shell中交互式調(diào)試
它為Python程序定義了一個交互式源代碼調(diào)試器。它支持在源代碼行級別設(shè)置條件斷點摹蘑、單步執(zhí)行筹燕,堆棧檢查,源碼列表以及在任何堆棧幀的上下文查看衅鹿。
用Pdb調(diào)試有多種方式
命令行加-m參數(shù)
命令行啟動目標(biāo)程序撒踪,加上-m參數(shù),這樣調(diào)用 testPdb.py的話斷點就是程序執(zhí)行的第一行之前
python -m pdb test.py
在python交互環(huán)境調(diào)試
>>> import pdb
>>> import test
>>> pdb.run('test.test()')
代碼中插入一段程序
比較常用的大渤,就是在程序中間插入一段程序制妄,相對于在一般 IDE 里面打上斷點然后啟動 debug,不過這種方式是 hardcode的
if __name__ == "__main__":
a = 1
import pdb
pdb.set_trace()
b = 2
c = a + b
print(c)
常用的命令
- break: b, 設(shè)置斷點
- continue: c, 繼續(xù)執(zhí)行程序
- list: l, 查看當(dāng)前行的代碼段
- step: s, 進入函數(shù)
- return: r, 執(zhí)行代碼直到從當(dāng)前函數(shù)返回
- quit: q, 中止并退出
- next: n, 執(zhí)行下一行
- print: p, 打印變量的值
- help: h, 幫助
- args: a, 查看傳入?yún)?shù)
- clear num: 刪除指定斷點
- bt: 查看函數(shù)調(diào)用棧幀
總結(jié)
pdb 調(diào)試有個明顯的缺陷就是對于多線程泵三,遠程調(diào)試等支持得不夠好耕捞,同時沒有較為直觀的界面顯示,不太適合大型的 python 項目烫幕。而在較大的 python 項目中俺抽,這些調(diào)試需求比較常見,因此需要使用更為高級的調(diào)試工具较曼。
原文地址