這是一個我用于調試或分析工具概述,不一定是完整全面,如果你知道更好的工具,請在評論處標記。
日志
是的,的確,不得不強調足夠的日志記錄對應用程序是多么的重要。您應該記錄重要的東西,如果你的記錄足夠好的話,你可以從日志中找出問題從而節省大量的時間。
如果你曾經用print語句來調試代碼現在停下吧,用logging.debug替代,開始可以慢慢來,以后完全禁用它...
追蹤
有時看到程序如何被執行會很有幫助。你可以使用IDE的調試共軛ngn一步一步的運行程序,但你需要知道你要找的是什么,否則這將會是一個漫長的過程。
標準庫中有一個 trace模塊,可以打印所有執行過程中的內容(像制作 覆蓋率報告)。
python -mtrace --trace script.py
這將產生大量輸出(每個行會被打印輸出,所以你最好通過管道,用grep只看自己感興趣的部分),例如:
python -mtrace --trace script.py | egrep '^(mod1.py|mod2.py)'-
如果你喜歡新特性,那么你可以嘗試 smiley - 它可以顯示變量內容變化,還可以用它來遠程追蹤程序。
PDB
import pdbpdb.set_trace() # opens up pdb prompt
或者:
try: code that failsexcept: import pdb pdb.pm() # or pdb.post_mortem()
或(按鍵盤C鍵啟動腳本):
python -mpdb script.py
像在REPL中那樣:
c or continue q or quit l or list, 在當前界面顯示源碼 w or where, 顯示回溯 d or down, 顯示回溯的下一界面 u or up, 顯示回溯的上一界面 <enter>, 重復最后一個命令 其他任何東西,在當前界面評估源碼 (t還有其他的一些命令) corcontinue qorquit lorlist,顯示在當前幀的源 worwhere,顯示回溯 dordown,下山1幀回溯 uorup,上升1幀回溯 回車,重復最后一個命令幾乎任何東西,評估當前幀的Python代碼(還有其他幾個命令)
可以替代pdb的:
ipdb (easy_install ipdb) - 像 ipython (自動補齊, 顏色等) pudb (easy_install pudb) - 基于curses (類gui), 瀏覽源碼有很好的表現。遠程 PDB
sudo apt-get install winpdb
替代 pdb.set_trace():
import rpdb2rpdb2.start_embedded_debugger("secretpassword")
現在運行Winpdb , 輸入密碼 到 File > Attach。
不喜歡 Winpdb ? 只要通過 TCP運行 PDB
新聞熱點
疑難解答