Python pdb除錯程式

2021-10-02 19:33:30 字數 2288 閱讀 3435

使用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...