新聞中心
對(duì)于大多數(shù)的程序員來說,掌握兩款以上的編程語(yǔ)言應(yīng)用方法是他們必要的職業(yè)技能。那么在這其中,Python就是其中一個(gè)選擇比較多的語(yǔ)言。我們?cè)谶@里可以通過Python程序調(diào)試的相關(guān)方法的解讀,來了解這一語(yǔ)言的應(yīng)用特點(diǎn)。

成都服務(wù)器托管,創(chuàng)新互聯(lián)提供包括服務(wù)器租用、服務(wù)器托管、帶寬租用、云主機(jī)、機(jī)柜租用、主機(jī)租用托管、CDN網(wǎng)站加速、主機(jī)域名等業(yè)務(wù)的一體化完整服務(wù)。電話咨詢:13518219792
Python程序調(diào)試源碼例子
例如,有模擬稅收計(jì)算的程序:
- #!/usr/bin/python
- def debug_demo(val):
- if val <= 1600 :
- print "level 1"
- print 0
- elif val <= 3500 :
- print "level 2"
- print (val - 1600) * 0.05
- elif val <= 6500 :
- print "level 3"
- print (val - 3500) * 0.10 + (3500-1600) * 0.05
- else:
- print "level 4"
- print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05
- #~def debug_demo
- if __name__ == "__main__":
- debug_demo(4500)
debug_demo函數(shù)計(jì)算4500的入賬所需的稅收。
如何進(jìn)行Python程序調(diào)試?
1.加入斷點(diǎn)
在需要插入斷點(diǎn)的地方,加入紅色部分代碼:如果_DEBUG值為True,則在該處開始調(diào)試(加入_DEBUG的原因是為了方便打開/關(guān)閉調(diào)試)。
- #!/usr/bin/python
- _DEBUG=True
- def debug_demo(val):
- if _DEBUG == True:
- import PDB
- PDB.set_trace()
- if val <= 1600 :
- print "level 1"
- print 0
- elif val <= 3500 :
- print "level 2"
- print (val - 1600) * 0.05
- elif val <= 6500 :
- print "level 3"
- print (val - 3500) * 0.10 + (3500-1600) * 0.05
- else:
- print "level 4"
- print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05
- #~def debug_demo
- if __name__ == "__main__":
- debug_demo(4500)
2.開始運(yùn)行Python程序調(diào)試
運(yùn)行程序./debug_demo.py,得到
- > /usr/local/qspace/user_network/debug_demo.py(7)debug_demo()
- -> if val <= 1600 :
- (PDB)
-> val <= 1600 : 指示當(dāng)前執(zhí)行的語(yǔ)句,(PDB)等待你的調(diào)試指令. PDB的指令很豐富,輸入h指令可以查看指令的使用方法。下面簡(jiǎn)單介紹Python程序調(diào)試常用指令:
查看代碼上下文,l(小寫L)
- (PDB)
- _DEBUG=True
- def debug_demo(val):
- if _DEBUG == True:
- import PDB
- PDB.set_trace()
- -> if val <= 1600 :
- print "level 1"
- print 0
- elif val <= 3500 :
- print "level 2"
- print (val - 1600) * 0.05
- (PDB)
左邊是行號(hào),右邊是代碼正文。
監(jiān)視變量:p 變量名
- (PDB) p val
- 4500
- (PDB)
單步執(zhí)行: n
- -> elif val <= 3500 :
- (PDB)
- import PDB
- PDB.set_trace()
- if val <= 1600 :
- print "level 1"
- print 0
- -> elif val <= 3500 :
- print "level 2"
- print (val - 1600) * 0.05
- elif val <= 6500 :
- print "level 3"
- print (val - 3500) * 0.10 + (3500-1600) * 0.05
加入斷點(diǎn):b 行號(hào)
- (PDB) b 14
運(yùn)行到斷點(diǎn): c
- (PDB) c
- > /*****
- -> print "level 3"
- (PDB)
- print 0
- elif val <= 3500 :
- print "level 2"
- print (val - 1600) * 0.05
- elif val <= 6500 :
- B-> print "level 3"
- print (val - 3500) * 0.10 + (3500-1600) * 0.05
- else:
- print "level 4"
- print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05
執(zhí)行到函數(shù)返回前: r
- (PDB) r
- level 3
- 195.0
- --Return--
- > /****()
- ->None
- -> print (val - 3500) * 0.10 + (3500-1600) * 0.05
- (PDB)
說明:
PDB還有很多其他很多有用的指令,讀者可以自行探索。輸入h,h 命令。就可以得到命令的詳細(xì)幫助。
不過,我個(gè)人認(rèn)為一般無(wú)需啟動(dòng)這種Python程序調(diào)試方法,一般使用日志輸出進(jìn)行調(diào)試即可,除非遇到了非常微妙的錯(cuò)誤。這時(shí),單步調(diào)試的威力便顯示出來了。
文章標(biāo)題:利用PDB實(shí)現(xiàn)Python程序調(diào)試
網(wǎng)頁(yè)URL:http://www.fisionsoft.com.cn/article/dpsdigs.html


咨詢
建站咨詢
