用PDB庫除錯Python程式

2021-09-06 05:14:12 字數 2650 閱讀 7093

用pdb除錯有多種方式可選:

1. 命令列啟動目標程式,加上-m引數,這樣呼叫myscript.py的話斷點就是程式的執行第一行之前

python -m pdb myscript.py

2. 在python互動環境中啟用除錯

>>> import pdb

>>> import mymodule

>>> pdb.run(『mymodule.test()』)

在 python 中也可以像 gcc/gdb 那樣除錯程式,只要在執行 python 程式時引入 pdb 模組(假設要除錯的程式名為 d.py):

$ vi d.py

#!/usr/bin/python

def main():

i, sum = 1, 0

for i in xrange(100):

sum = sum + i

print sum

if __name__ == '__main__':

main()

$ python -m pdb d.py

執行上面的命令後進入以下介面,可以輸入類似 gdb 的命令來改變程式的執行流程:

$ python -m pdb 1.py

> d.py(3)()

-> def main():

(pdb)

list 顯示程式的最近**段:

(pdb) list

1 #!/usr/bin/python

2 3 -> def main():

4 i, sum = 1, 0

5 for i in xrange(100):

6 sum = sum + i

7 print sum

8 9 if __name__ == '__main__':

10 main()

[eof]

(pdb) next

> d.py(9)()

-> if __name__ == '__main__':

用 break 在第6行設定乙個斷點:

(pdb) break d.py:6

breakpoint 1 at d.py:6

(pdb) list

1 #!/usr/bin/python

2 3 def main():

4 i, sum = 1, 0

5 -> for i in xrange(100):

6 b sum = sum + i

7 print sum

8 9 if __name__ == '__main__':

10 main()

[eof]

如果想在函式處設定斷點:

(pdb) break d.main

d.py:3

(pdb) list

1 #!/usr/bin/python

2 3 b def main():

4 -> i, sum = 1, 0

5 for i in xrange(100):

6 sum = sum + i

7 print sum

8 9 if __name__ == '__main__':

10 main()

[eof]

還可以給斷點加條件,比如設定條件只有當 sum > 50 的時候才 break:

(pdb) break d.py:6, sum > 50

breakpoint 1 at d.py:6

如果想檢視某個變數的值,可以用 pp 命令列印出來:

(pdb) step

> d.py(5)main()

-> for i in xrange(100):

(pdb) pp sum

0

可以直接在程式裡使用 pdb 模組,import pdb 後 pdb.set_trace():

#!/usr/bin/python

import pdb

def main():

i, sum = 1, 0

for i in xrange(100):

sum = sum + i

pdb.set_trace()

print sum

if __name__ == '__main__':

main()

這樣只要執行程式 ./d.py 就可以直接執行到 print sum 處:

$ ./d.py

> d.py(9)main()

-> print sum

(pdb)

總結

命令 用途

break 或 b

設定斷點

continue 或 c

繼續執行程式

list 或 l

檢視當前行的**段

step 或 s

進入函式

return 或 r

執行**直到從當前函式返回

exit 或 q

中止並退出

next 或 n

執行下一行

pp 列印變數的值

help

幫助參考自:

用PDB庫除錯Python程式

如果使用過微軟技術的朋友應該體會過微軟的visual studio系列ide給debug程式帶來的方便,換了個工作就沒有visual studio了,對於我這種從未在非gui環境下除錯過程式的人來說實在有點不爽,今天花了點時間看了一下python自帶的pdb庫,發現用pdb來除錯程式還是很方便的,當...

用PDB庫除錯Python程式

如果使用過微軟技術的朋友應該體會過微軟的visual studio系列ide給debug程式帶來的方便,換了個工作就沒有visual studio了,對於我這種從未在非gui環境下除錯過程式的人來說實在有點不爽,今天花了點時間看了一下python自帶的pdb庫,發現用pdb來除錯程式還是很方便的,當...

PDB除錯Python程式

pdb是python內建的除錯工具,它可以在終端中除錯python程式,這允許pdb在很多無法安裝ide的伺服器上使用.雖然遠端除錯使用廣泛,但在必要的時候 比如難以在本地搭建執行環境 pdb仍然是乙個便利的選擇.我們可以在python源 中設定斷點 import pdb def func for ...