如果使用過微軟技術的朋友應該體會過微軟的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 = 1
import pdb
pdb.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 ...