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

像老大一樣調(diào)試Python

開發(fā) 后端
上面的一段代碼有木有很像你平時調(diào)試代碼的樣子?好吧,我原來也是這樣。老實說,這并不壞。敲一些print進去,運行代碼,然后看會發(fā)生什么。你肯定需要在輸出里面翻來翻去的,但你能找到你想要的結(jié)果。
  1. def make_pie(self, ingredients): 
  2.     print '******WHAT IS GOING ON HERE******' 
  3.     print ingredients 
  4.     self.oven.preheat() 
  5.     print self.oven.temperature 

上面的一段代碼有木有很像你平時調(diào)試代碼的樣子?好吧,我原來也是這樣。老實說,這并不壞。敲一些print進去,運行代碼,然后看會發(fā)生什么。你肯定需要在輸出里面翻來翻去的,但你能找到你想要的結(jié)果。至少,當你知道你想要什么。不過通常不是這樣,如果你知道檢驗些什么,你可能就不會需要打印那些 輸出了。反而,你把一些print代碼扔到你覺得可能有問題的地方,然后反復的移動這些語句,知道發(fā)現(xiàn)真正的bug。就是二分查找嘛!

謝天謝地,有一個更好的方法。從C語言開始,有一類被稱為調(diào)試器的工具在每種語言里都出現(xiàn)了。Python也不例外,里面就有一個默認的調(diào)試器。還有一些社區(qū)開發(fā)的很酷的調(diào)試器。在接下來的內(nèi)容里,我會談?wù)勔恍┍容^流行的調(diào)試工具。

Pdb

debugpython2

首先來說Python里內(nèi)建的調(diào)試器,pdb。它利用一個簡單的命令行界面,還有很多你在用調(diào)試器時用得上的功能。幫助系統(tǒng)能為你指出你能運行的命令,比如單步調(diào)試代碼,操縱調(diào)用棧和設(shè)置斷點。

一些它缺少的功能:按tab能讓本地變量自動補全和讓代碼和棧追蹤更好看的配色和布局。

不管你最后決定使用哪種調(diào)試器,pdb是值得你花時間了解它的,有兩個原因:1)它在Python里總是可用的 2)很多其他的調(diào)試器的功能是pdb的超集,先學pdb能讓你更快的學習其他的調(diào)試器。

總之,如果有更好的還是用別的調(diào)試器吧。

Pydbgr

debugpython3

接下來是pydbgr(支持Python 3.2+ 版本),這個項目是對pydb調(diào)試器的重寫。它提供了與pdb非常相似的一組命令,盡管如此,有一些有用的別名比如’u’表示’up’是沒有的。

這個調(diào)試器做得很好的一點是能夠?qū)?zhí)行流向進行細粒度地控制。你可以輸入命令并指定命令重復執(zhí)行的次數(shù)。你也可以告訴調(diào)試器在某些事件觸發(fā)時停止,比如函數(shù)調(diào)用和返回,這能讓你減少很多調(diào)試的步數(shù)。

調(diào)試器的另一個特性是提供了其他調(diào)試器沒有的功能,它能通過像examine 和disassemble這樣的命令來進行非常低級別的符號檢查。說實話,我不太確定這個功能在web開發(fā)里被證明很有用,但它能讓你的工作很不同。

總之:它對pdb添加的特性我覺得不是對web開發(fā)很有用的。

pudb

debugpython4

 

這個調(diào)試器里最明顯的亮點就是它在終端里融合了一個迷你圖形界面。這很正確,這不是一個分開的窗口,這是在終端里面。除了一組用于強調(diào)的默認顏色(它能夠定制或選擇一組默認的主題),這在調(diào)試器的交互上是一個新穎的嘗試。

左邊的面板顯示當前文件的代碼(或者你在棧里上下移動的其他文件)。導航欄非常棒,包含箭頭鍵(以及’hjkl’對喜愛vim的群眾),搜索,并且 能用模糊查詢打開其他的模塊。能把這些簡單的行為用一個快捷鍵結(jié)合起來執(zhí)行光標位置的代碼,并且有非常直觀和友好的方式來單步調(diào)試程序。當然,pudb仍 然提供了正常的斷點和單步命令使你能隨心所愿地控制代碼的執(zhí)行。

在右邊,有幾個面板來追蹤當前的本地變量,棧,和存在的斷點。這在你鍵入 locals(),whereh或者用tab完成來反射當前框架時與典型的終端調(diào)試器非常不一樣,

這個調(diào)試器的另一個優(yōu)點是它支持事后分析。當你命中一個異常,調(diào)試器會用一個很快的鍵來提示你這個異常。它也能讓你直接跳到發(fā)生了異常的那一行,同時能讓棧和變量保持完好。

總結(jié):擁有這堆調(diào)試器里最好的用戶體驗;對于棧追蹤特別有用。

Ipdb

debugpython5

最后一個就是iPython里的ipdb。就像它的 *pdb 的兄弟們,它的界面是一個簡單的命令行并且它的幫助系統(tǒng)是個非常值得深入研究的地方。讓這貨與眾不同的是它使用了一個iPython shell,所以所有的tab 完成和對象反射的功能都用,能幫你發(fā)現(xiàn)究竟發(fā)生了什么。把這些與很棒的語法高亮和一個擁有最好的格式化的where命令結(jié)合起來,就組成了一個干掉bug 的完美工具。

總結(jié):這是最棒的一個也是本人的最愛。

我會提到,根據(jù)情況,我切換到pudb。它確實在瀏覽代碼是如何運行方面是最棒的(比如當你必須鉆研一個除了毛病的第三方庫)。而我為什么最傾向于 ipdb,是因為大部分時候我對代碼都很熟悉,并不需要一個大圖片。我需要知道在一個指定的函數(shù)里是什么狀態(tài)。把它們結(jié)合起來,就是超級超級NB的東西啦!

原文鏈接:https://zapier.com/engineering/debugging-python-boss/

譯文鏈接:http://blog.jobbole.com/52171/

責任編輯:陳四芳 來源: 伯樂在線
相關(guān)推薦

2013-12-31 09:19:23

Python調(diào)試

2014-02-27 13:10:57

Visual Stud調(diào)試

2023-05-23 13:59:41

RustPython程序

2022-10-21 13:52:56

JS 報錯調(diào)試本地源碼

2022-08-26 08:17:32

Sidekick開源

2021-05-20 08:37:32

multiprocesPython線程

2023-04-05 14:19:07

FlinkRedisNoSQL

2017-05-22 10:33:14

PythonJuliaCython

2022-12-21 15:56:23

代碼文檔工具

2020-08-25 08:56:55

Pythonawk字符串

2014-09-22 09:27:57

Python

2015-03-16 12:50:44

2013-08-22 10:17:51

Google大數(shù)據(jù)業(yè)務(wù)價值

2011-01-18 10:45:16

喬布斯

2012-06-08 13:47:32

Wndows 8Vista

2015-02-05 13:27:02

移動開發(fā)模塊SDK

2012-03-21 10:15:48

RIM越獄

2021-09-07 10:29:11

JavaScript模塊CSS

2021-12-14 19:40:07

Node路由Vue

2012-06-14 09:48:11

OpenStackLinux
點贊
收藏

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