用PDB庫除錯Python程式

2021-06-16 15:43:24 字數 1961 閱讀 5307

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

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

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

python -m pdb myscript.py

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

>>> import pdb

>>> import mymodule

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

3. 比較常用的,就是在程式中間插入一段程式,相對於在一般ide裡面打上斷點然後啟動debug,不過這種方式是hardcode的

if __name__ ==

"__main__":

a =1import

pdbpdb.set_trace()

b =2 c = a + b

print

(c)

然後正常執行指令碼,到了pdb.set_trace()那就會定下來,就可以看到除錯的提示符(pdb)了

常用的除錯命令

(pdb) l

497 pdb.set_trace()

498 base_data = {}

499 new_data = {}

500 try:

501 execfile(base_file_name,{},base_data)

502 -> execfile(new_file_name,{},new_data)

503 except:

504 logger.writelog(「error! load result log error!」)

505 print 「load cmp logs error!」

506 raise exception, 「load cmp logs error!」

507

(pdb) b 504

breakpoint 4 at /home/jchen/regression/regressionlogcmp.py:504

(pdb) condition 4 a==3

(pdb) b

num type disp enb where

4 breakpoint keep yes at /home/jchen/regression/regressionlogcmp.py:504

stop only if a==3

(pdb) cl

clear all breaks? y

(pdb) disable 3

(pdb) b

num type disp enb where

3 breakpoint keep no at /home/jchen/regression/regressionlogcmp.py:505

(pdb) j 497

> /home/jchen/regression/regressionlogcmp.py(497)comparelog()

-> pdb.set_trace()

(pdb) a

_logger =

_base = ./base/mrm-8137.log

_new = ./new/mrm-8137.log

_caseid = 5550001

_tostepnum = 10

_cmpmap =

(pdb) p _new

u』./new/mrm-8137.log』

發現在命令列下除錯程式也是一件挺有意思的事情,記錄下來分享一下

no related posts.

用PDB庫除錯Python程式

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

用PDB庫除錯Python程式

用pdb除錯有多種方式可選 1.命令列啟動目標程式,加上 m引數,這樣呼叫myscript.py的話斷點就是程式的執行第一行之前 python m pdb myscript.py 2.在python互動環境中啟用除錯 import pdb import mymodule pdb.run mymodu...

PDB除錯Python程式

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