自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

利用PDB實現(xiàn)Python程序調(diào)試

開發(fā) 后端
Python程序調(diào)試的實現(xiàn)可以通過PDB的使用來進(jìn)行操作。那么今天我們就在這篇文章中為大家詳細(xì)介紹一下相關(guān)的使用方法。

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

Python程序調(diào)試源碼例子

例如,有模擬稅收計算的程序:

  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ù)計算4500的入賬所需的稅收。

如何進(jìn)行Python程序調(diào)試?

1.加入斷點

在需要插入斷點的地方,加入紅色部分代碼:如果_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.開始運行Python程序調(diào)試

運行程序./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指令可以查看指令的使用方法。下面簡單介紹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)  

左邊是行號,右邊是代碼正文。

監(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  

加入斷點:b 行號

  1. (PDB) b 14 

運行到斷點: 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ì)幫助。

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

【編輯推薦】

  1. Python單元測試正確使用規(guī)則
  2. Python SQLITE數(shù)據(jù)庫操作簡便易用
  3. 編寫Python程序?qū)崿F(xiàn)行數(shù)統(tǒng)計
  4. Python print正確使用方法淺析
  5. Python算法正確實現(xiàn)方式介紹
責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-03-03 10:58:05

Python PDB

2011-02-22 11:07:24

Python

2023-10-25 09:26:23

Linux工具

2019-04-08 10:09:04

CPU緩存高性能

2022-09-02 15:08:02

Python郵件發(fā)送

2021-10-13 09:33:26

Python 多任務(wù)進(jìn)程

2017-04-18 21:54:27

iOSWireShark網(wǎng)絡(luò)請求

2020-06-23 09:48:09

Python開發(fā)內(nèi)存

2024-12-23 14:04:26

Python開發(fā)調(diào)試工具

2020-12-17 09:20:44

Python自動掃雷腳本

2023-10-07 09:37:53

2017-03-03 10:47:57

TensorFlowtfdbg機器學(xué)習(xí)

2009-06-19 16:36:29

Java程序調(diào)試

2021-10-14 10:05:17

開源項目代碼

2010-03-04 09:49:58

Python Hell

2020-03-18 09:23:24

Python數(shù)據(jù)SQL

2017-10-23 14:08:37

2011-07-26 14:44:53

調(diào)試 Xcode

2012-02-15 13:26:56

IndexedDB

2021-10-15 09:00:02

Python日期轉(zhuǎn)換Python基礎(chǔ)
點贊
收藏

51CTO技術(shù)棧公眾號