python在Ubuntu系統下的除錯工具pdb
阿新 • • 發佈:2019-01-31
使用 pdb 進行除錯
pdb 是 python 自帶的一個包,為 python 程式提供了一種互動的原始碼除錯功能,主要特性包括設定斷點、單步除錯、進入函式除錯、檢視當前程式碼、檢視棧片段、動態改變變數的值等。pdb 提供了一些常用的除錯命令
參考連結
簡而言之就兩步:
- 1.import pdb
- 2.設定斷點 pdb.set_trace()
命令 : 解釋
- break 或 b : 設定斷點 設定斷點
- continue 或 c : 繼續執行程式
- list 或 l : 檢視當前行的程式碼段
- step 或 s : 進入函式
- return 或 r : 執行程式碼直到從當前函式返回
- exit 或 q : 中止並退出
- next 或 n : 執行下一行
- p : 列印變數的值
- help : 幫助
示例
import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print final
使用python -m pdb mysqcript.py
這樣的方式,(Pdb) 會自動停在第一行,等待除錯;這時你可以看看幫助 (Pdb) h(elp)
說明下這幾個關鍵 命令
斷點設定
(Pdb)b 10 #斷點設定在本py的第10行
或(Pdb)b ots.py:20 #斷點設定到 ots.py第20行
刪除斷點(Pdb)b #檢視斷點編號
(Pdb)cl 2 #刪除第2個斷點
執行
(Pdb)n #單步執行
(Pdb)s #細點執行 也就是會下到,方法
(Pdb)c #跳到下個斷點
檢視
(Pdb)p param #檢視當前 變數值 (Pdb)l #檢視執行到某處程式碼 (Pdb)a #檢視全部棧內變數 (Pdb)w 列出目前call stack 中的所在層。 (Pdb)d 在call stack中往下移一層 (Pdb)u 在call stack中往上移一層。如果在上移一層之後按下 n ,則會在上移之後的一層執行下一個敘述,之前的 function call 就自動返回。 (Pdb)cl 清除指定的斷點。如果沒有帶引數,則清除所有斷點。 (Pdb)disable 取消所有斷點的功能,但仍然保留這些斷點。 (Pdb)enable 恢復斷點的功能。 (Pdb)ignore 設定斷點的忽略次數。如果沒指定 count,其初始 為 0。當 count 為 0 時,斷點會正常動作。若有指定 count,則每次執行到該中斷, count 就少 1,直到 count 數為 0。 (Pdb)condition bpnumber [condition] (Pdb)j(ump) lineNo. 跳到某行執行。只有在 call stack 的最底部才能作用。 (Pdb)l 列出目前所在檔案中的位置。連續地 l 命令會一直列到檔案結尾,可以使用指定行數或範圍來列印。 (Pdb)pp 和 p 命令類似,但是使用 pprint module(沒用過 pprint,詳情請參考 Python Library Reference)。 (Pdb)alias 以一個"別名"代替"一群除錯命令",有點類似 c/c 的 macro(詳情請參考 Python Library Reference)。 (Pdb)unalias 取消某個 alias。 (Pdb)[!]statement 在目前的環境(context)中執行敘述。