成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

像老大一樣調試Python

開發 后端
上面的一段代碼有木有很像你平時調試代碼的樣子?好吧,我原來也是這樣。老實說,這并不壞。敲一些print進去,運行代碼,然后看會發生什么。你肯定需要在輸出里面翻來翻去的,但你能找到你想要的結果。
  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 

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

謝天謝地,有一個更好的方法。從C語言開始,有一類被稱為調試器的工具在每種語言里都出現了。Python也不例外,里面就有一個默認的調試器。還有一些社區開發的很酷的調試器。在接下來的內容里,我會談談一些比較流行的調試工具。

Pdb

debugpython2

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

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

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

總之,如果有更好的還是用別的調試器吧。

Pydbgr

debugpython3

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

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

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

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

pudb

debugpython4

 

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

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

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

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

總結:擁有這堆調試器里最好的用戶體驗;對于棧追蹤特別有用。

Ipdb

debugpython5

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

總結:這是最棒的一個也是本人的最愛。

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

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

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

責任編輯:陳四芳 來源: 伯樂在線
相關推薦

2013-12-31 09:19:23

Python調試

2014-02-27 13:10:57

Visual Stud調試

2023-05-23 13:59:41

RustPython程序

2022-10-21 13:52:56

JS 報錯調試本地源碼

2021-05-20 08:37:32

multiprocesPython線程

2022-08-26 08:17:32

Sidekick開源

2023-04-05 14:19:07

FlinkRedisNoSQL

2017-05-22 10:33:14

PythonJuliaCython

2022-12-21 15:56:23

代碼文檔工具

2014-09-22 09:27:57

Python

2020-08-25 08:56:55

Pythonawk字符串

2013-08-22 10:17:51

Google大數據業務價值

2015-03-16 12:50:44

2015-02-05 13:27:02

移動開發模塊SDK

2012-06-08 13:47:32

Wndows 8Vista

2011-01-18 10:45:16

喬布斯

2021-09-07 10:29:11

JavaScript模塊CSS

2021-12-14 19:40:07

Node路由Vue

2012-03-21 10:15:48

RIM越獄

2015-04-09 11:27:34

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品在线一区 | 精品一区二区三区在线观看国产 | 国产精品一区二区欧美 | 乱一性一乱一交一视频a∨ 色爱av | 亚洲精品久 | 99re视频精品 | 黄色大片观看 | 欧美中文一区 | 国产成人精品一区二区三区在线 | 在线观看第一页 | 99re热这里只有精品视频 | 久在线| 久久久久久国产精品 | www.日韩高清 | 欧美激情一区二区三区 | 久久精品欧美一区二区三区不卡 | av性色全交蜜桃成熟时 | 特级特黄特色的免费大片 | 亚洲成在线观看 | 中日韩毛片 | 亚洲欧洲成人av每日更新 | 久久一二区 | 黄色精品| 国产精品免费大片 | 欧美成人精品在线观看 | 色中文在线 | 日韩精品在线视频免费观看 | 亚洲色综合 | 国产午夜精品一区二区 | 国产精品久久久久aaaa | 日日摸天天添天天添破 | 99热视| 黑人一级片视频 | 国产精品视频免费观看 | 一级毛片网 | 一级毛片视频在线 | 精品欧美一区免费观看α√ | 日韩在线精品视频 | 狠狠干天天干 | 日韩欧美中文在线 | 国产成人网|