日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
利用PDB實(shí)現(xiàn)Python程序調(diào)試

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

 
 
 
  1. #!/usr/bin/python 
  2. def debug_demo(val): 
  3. if val <= 1600 : 
  4. print "level 1" 
  5. print 0 
  6. elif val <= 3500 : 
  7. print "level 2" 
  8. print (val - 1600) * 0.05 
  9. elif val <= 6500 : 
  10. print "level 3" 
  11. print (val - 3500) * 0.10 + (3500-1600) * 0.05 
  12. else: 
  13. print "level 4" 
  14. print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05 
  15. #~def debug_demo 
  16. if __name__ == "__main__": 
  17. 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)試)。

 
 
 
  1. #!/usr/bin/python 
  2. _DEBUG=True
  3. def debug_demo(val): 
  4. if _DEBUG == True: 
  5. import PDB 
  6. PDB.set_trace() 
  7. if val <= 1600 : 
  8. print "level 1" 
  9. print 0 
  10. elif val <= 3500 : 
  11. print "level 2" 
  12. print (val - 1600) * 0.05 
  13. elif val <= 6500 : 
  14. print "level 3" 
  15. print (val - 3500) * 0.10 + (3500-1600) * 0.05 
  16. else: 
  17. print "level 4" 
  18. print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05 
  19. #~def debug_demo 
  20. if __name__ == "__main__": 
  21. debug_demo(4500) 

2.開始運(yùn)行Python程序調(diào)試

運(yùn)行程序./debug_demo.py,得到

 
 
 
  1. > /usr/local/qspace/user_network/debug_demo.py(7)debug_demo() 
  2. -> if val <= 1600 : 
  3. (PDB)

-> val <= 1600 : 指示當(dāng)前執(zhí)行的語句,(PDB)等待你的調(diào)試指令. PDB的指令很豐富,輸入h指令可以查看指令的使用方法。下面簡(jiǎn)單介紹Python程序調(diào)試常用指令:

查看代碼上下文,l(小寫L)

 
 
 
  1. (PDB) 
  2. _DEBUG=True 
  3. def debug_demo(val): 
  4. if _DEBUG == True: 
  5. import PDB 
  6. PDB.set_trace() 
  7. -> if val <= 1600 : 
  8. print "level 1" 
  9. print 0 
  10. elif val <= 3500 : 
  11.  print "level 2" 
  12. print (val - 1600) * 0.05 
  13. (PDB) 

左邊是行號(hào),右邊是代碼正文。

監(jiān)視變量:p 變量名

 
 
 
  1. (PDB) p val 
  2. 4500 
  3. (PDB)

單步執(zhí)行: n

 
 
 
  1. -> elif val <= 3500 : 
  2. (PDB)
  3. import PDB 
  4. PDB.set_trace() 
  5. if val <= 1600 : 
  6. print "level 1" 
  7. print 0 
  8. -> elif val <= 3500 : 
  9. print "level 2" 
  10. print (val - 1600) * 0.05 
  11. elif val <= 6500 : 
  12. print "level 3" 
  13. print (val - 3500) * 0.10 + (3500-1600) * 0.05 

加入斷點(diǎn):b 行號(hào)

 
 
 
  1. (PDB) b 14

運(yùn)行到斷點(diǎn): c

 
 
 
  1. (PDB) c 
  2. > /***** 
  3. -> print "level 3" 
  4. (PDB)
  5. print 0 
  6. elif val <= 3500 : 
  7. print "level 2" 
  8. print (val - 1600) * 0.05 
  9. elif val <= 6500 : 
  10. B-> print "level 3" 
  11. print (val - 3500) * 0.10 + (3500-1600) * 0.05 
  12. else: 
  13. print "level 4" 
  14. print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05 

執(zhí)行到函數(shù)返回前: r

 
 
 
  1. (PDB) r 
  2. level 3 
  3. 195.0 
  4. --Return-- 
  5. > /****() 
  6. ->None 
  7. -> print (val - 3500) * 0.10 + (3500-1600) * 0.05 
  8. (PDB)

說明:

PDB還有很多其他很多有用的指令,讀者可以自行探索。輸入h,h 命令。就可以得到命令的詳細(xì)幫助。

不過,我個(gè)人認(rèn)為一般無需啟動(dòng)這種Python程序調(diào)試方法,一般使用日志輸出進(jìn)行調(diào)試即可,除非遇到了非常微妙的錯(cuò)誤。這時(shí),單步調(diào)試的威力便顯示出來了。


分享文章:利用PDB實(shí)現(xiàn)Python程序調(diào)試
分享地址:http://m.5511xx.com/article/dpsdigs.html