1. 程式人生 > >調試程序方法pdb

調試程序方法pdb

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