使用pdb的方式有兩種:
1. 單步執行**,通過命令 python -m pdb ***.py 啟動指令碼,進入單步執行模式
pdb命令列:
1)進入命令列debug模式,python -m pdb ***.py
2)h:(help)幫助
3)w:(where)列印當前執行堆疊
4)d:(down)執行跳轉到在當前堆疊的深一層(個人沒覺得有什麼用處)
6)b:(break)新增斷點
b 列出當前所有斷點,和斷點執行到統計次數
b line_no:當前指令碼的line_no行新增斷點
b filename:line_no:指令碼filename的line_no行新增斷點
b function:在函式function的第一條可執行語句處新增斷點
7)tbreak:(temporary break)臨時斷點
在第一次執行到這個斷點之後,就自動刪除這個斷點,用法和b一樣
8)cl:(clear)清除斷點
cl 清除所有斷點
cl bpnumber1 bpnumber2... 清除斷點號為bpnumber1,bpnumber2...的斷點
cl lineno 清除當前指令碼lineno行的斷點
cl filename:line_no 清除指令碼filename的line_no行的斷點
9)disable:停用斷點,引數為bpnumber,和cl的區別是,斷點依然存在,只是不啟用
10)enable:啟用斷點,引數為bpnumber
如果本句是函式呼叫,則s會執行到函式的第一句
如果本句是函式呼叫,則執行函式,接著執行當前執行語句的下一條。
13)r:(return)執行當前執行函式到結束
15)l:(list)列出原始碼
l 列出當前執行語句周圍11條**
l first 列出first行周圍11條**
l first second 列出first--second範圍的**,如果second注意:
2:輸入pdb不認識的命令,pdb會把他當做python語句在當前環境下執行;
例項:
#test1.py
s = 『0』
n = int(s)
print(10/n)
開啟命令列執行test1.py
pdm定位到下一步要執行的**-> s = 『0』,輸入命令l,就是上面的第15個命令l(list)來檢視下**:
輸入命令n可以單步執行**
還可以輸入 p 變數名 來檢視變數
但是這個變數所在的**必須是執行過之後才能檢視,否則,會出現找不到變數的情況,如下
剛開始執行test.py,到第一行**s = 『0』,這行**實際還未執行。此時檢視變數s會提示找不到變數
輸入命令q結束除錯,退出程式
2. pdb單步執行太麻煩了,所以第二種方法是import pdb 之後,直接在**裡需要除錯的地方放乙個pdb.set_trace(),就可以設定乙個斷點, 程式會在pdb.set_trace()暫停並進入pdb除錯環境,可以用pdb 變數名檢視變數,或者c繼續執行
修改下上面的例項如下,import pdb, 新增了pdb.set_trace()到可能出錯的**前面
#test1.py
import pdb
s = 『0』
n = int(s)
pdb.set_trace() #執行到這裡會自動暫停
print(10/n)
執行之後,程式到斷電的下一行**就暫停了
python pdb斷點除錯
pdb 是 python 的乙個內建模組,用於命令列來除錯 python 使用介紹 說到 debug,肯定是要新增斷點的,這裡有兩種方式新增斷點 1.在想要斷點 後新增 一行 pdb.set trace 若是使用這種方式,直接執行 python 檔案即可進入斷點除錯。2.用命令列來新增斷點 b li...
python pdb 斷點除錯
import pdb pdb.set trace a args 列出當前執行函式的函式 p expression print 輸出expression的值 eg p list map lambda x x.lower manager ssids u 40 mgmt u 123 u 112 u 112...
php 除錯程式
在執行時必須知道某個變數為何值。我是這樣做的,建立一檔案debug.php,其內容如下 php php ob start session start echo pre echo 本頁得到的 get變數有 print r get echo 本頁得到的 post變數有 print r post echo...