Linux下的Python調試
python有內建的pdb庫,可以實現簡單的調試功能,基本命令與gdb類似,不過功能不會有gdb那麼強大,pdb主要支援多斷點設定(可條件設定),代碼級單步調試,查看堆棧資訊,代碼查看,post-mortem調試,
詳細資料可以查看:http://docs.python.org/2/library/pdb.html
用pdb調試有多種方式可選:
1. 命令列啟動目標程式,加上-m參數,這樣調用myscript.py的話斷點就是程式的執行第一行之前
python -m pdb myscript.py
2. 在Python互動環境中啟用調試
>>> import pdb
>>> import mymodule
>>> pdb.run(‘mymodule.test()’)
3. 比較常用的,就是在程式中間插入一段程式,相對於在一般IDE裡面打上斷點然後啟動debug,
[python]view plaincopy print?
- if__name__=="__main__":
- a=1
- importpdb
- pdb.set_trace()
- b=2
- c=a+b
- print(c)
正常運行指令碼後,到了pdb.set_trace()那就會定下來,就可以看到調試的提示符(Pdb)了
一些常用指令:
h(elp)[comman] #列印可用指令及協助資訊
r(eturn) #運行代碼直到下一個斷點或當前函數返回
b(reak)[[filename:]lineno | function[, condition]] #指定檔案某行或函數體來設定斷點
l(ist)[first[, last]] #查看指定程式碼片段
n(ext) #執行下一行
s(tep)#執行下一行,若為函數則進入函數體
p #列印某個變數
a(rgs) #列印當前函數的參數
w(here) #列印堆棧資訊
d(own) #移至下層堆棧
u(p) #移至上層堆棧
j(ump) #跳轉到指定行
continue / c #繼續執行
disable [bpnumber [bpnumber]]#失效斷點
enable[bpnumber [bpnumber]] #啟用斷點
cl(ear)[filename:lineno | bpnumber [bpnumber]] #刪除斷點
q(uit)/exit #中止調試並退出