現在我在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..