調試程序方法pdb
阿新 • • 發佈:2019-01-04
test assert 變量 def 定位 發現 return span ogg
實例:
test.py
def foo(s): n = int(s) assert n != 0, ‘n is zero!‘ return 10 / n def main(): foo(‘0‘)
命令行啟動 python -m pdb test.py
以參數-m pdb
啟動後,pdb定位到下一步要執行的代碼-> s = ‘0‘
。輸入命令l
來查看代碼,
輸入命令n
可以單步執行代碼,
任何時候都可以輸入命令p 變量名
來查看變量:
(Pdb) p s ‘0‘ (Pdb) p n 0
輸入命令q
結束調試,退出程序
這種通過pdb在命令行調試的方法理論上是萬能的,但實在是太麻煩了,如果有一千行代碼,要運行到第999行得敲多少命令啊。還好,我們還有另一種調試方法。
pdb.set_trace()
這個方法也是用pdb,但是不需要單步執行,我們只需要import pdb
,然後,在可能出錯的地方放一個pdb.set_trace()
,就可以設置一個斷點:
例:
# err.py import pdb s = ‘0‘ n = int(s) pdb.set_trace() # 運行到這裏會自動暫停 print(10 / n)
運行代碼,程序會自動在pdb.set_trace()
暫停並進入pdb調試環境,可以用命令p
查看變量,或者用命令c
繼續運行
小結
寫程序最痛苦的事情莫過於調試,程序往往會以你意想不到的流程來運行,你期待執行的語句其實根本沒有執行,這時候,就需要調試了。
雖然用IDE調試起來比較方便,但是最後你會發現,logging才是終極武器。
調試程序方法pdb