Python 程式如何高效地調試?

來源:互聯網
上載者:User
現在我在debug python程式就只是簡單在有可能錯誤的地方print出來看一下,不知道python有沒像c++的一些IDE一樣有單步調試這類的工具?或者說各位python大神一般是怎麼debug自己的python程式的?

回複內容:

這個要怒答一發。
應該用過 IPython 吧?想象一下,拋出異常時自動把你帶到 IPython Shell 是不是很開心?而且和普通的IPython不同,這個時候可以調用 p (print), up(up stack), down(down stack) 之類的命令。還能建立臨時變數,執行任意函數。

事實上這是可以實現的, 而且很簡單,不過你要先安裝 IPython。然後把以下代碼儲存為 `crash_on_ipy.py`
import sysclass ExceptionHook:    instance = None    def __call__(self, *args, **kwargs):        if self.instance is None:            from IPython.core import ultratb            self.instance = ultratb.FormattedTB(mode='Plain',                 color_scheme='Linux', call_pdb=1)        return self.instance(*args, **kwargs)sys.excepthook = ExceptionHook()
想要類gdb的功能,可以使用pdb,例如:

import pdb
pdb.set_trace()

將上面2行加入到需要加斷點的代碼處,運行時,執行在此處即可中斷,單步、繼續、查看變數值等功能都有,不妨help下。推薦PyCharm
不錯的IDE,designed for python~ ,支援win,linux,maxos
支援斷點調試,內建連接器(GitHub,Mantis,Jira,Bugzilla)
如果不考慮多語言混合編程,優於eclipse。
介面如:

個人使用體驗不錯,不過在macos系統下,配置interpreter要稍微折騰下。
官網傳送門:http://www.jetbrains.com/pycharm/
一圖勝千言,左上是調用棧,右上是變數值,底部是當前運行到那行代碼,比print之類的調試方式效率高太多了。

用的是eclipse+pydevpython -m pdb your.py 我最近使用了pudb,感覺比pdb的更加友好一些。linux下命令列安裝很簡單:
pip install pudb
常年print+type的路過~必須是ipython。偵錯工具的最佳時刻是程式出錯的時候,有時候運行出了錯誤之後再調用調試器重現一遍可能錯誤又不能複現了,或者是再現錯誤需要很長的已耗用時間。而在ipython裡運行程式可以在出錯的第一時間進行調試,查看堆棧裡的內容,絕對是方便之極。試了下vs2015的py組件,感覺不比pycharm差常年vim或者textmate. 調試print.dir, type等。再搞不懂就pdb..
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.