關於的python+web開發的除錯工具
最近在做python+web開發,採用的是cig模式。但是偶爾會出現請求失敗的情況,具體來說就是使用者在開啟新的頁面的時候,python與後臺server的通訊會卡在某個地方,具體的原因一直搞不清楚,所以想利用python的相關除錯工具來解決這個問題。但是python一般自帶的除錯工具都是本地(local)的,沒法進行遠端(remote)除錯,後來網上找了好久,發現一些主流的除錯工具有ipython notebook,但是這個東西折騰了好久,愣是沒搞出來,然後就放棄了。
但是這兩天的搜刮資料畢竟有點效果,終於知道自己要找的是什麼樣的工具了,python遠端除錯,這個東東主要實現的功能是當用戶在開啟我們提供的連結時,如果系統出現bug,這個過程我們是無法捕捉到的。所以,使用者在什麼情況下遇到這種問題,也就很難把握了。當然,我們可以採用日誌記錄這個事件,這不失為一種好辦法。但是,我們也可以採用另外一種,就是,我們自己去進行連結訪問,然後在本地開啟相關服務,在訪問過程處理的時候,本地會自動彈出我們設定斷點的地方,然後我們就可以利用一些單步執行,等等簡單的指令進行系統除錯。
瞭解了一下,感覺pycharm還是蠻受歡迎的,但是相對而言,pycharm對系統的要求也是蠻高的,如果電腦配置差點的話,pycharm執行就比較卡了。
不過,我發現了一種更輕量級的除錯工具,某大神編寫的,過會我會把原始連結放在下面。接下來描述這個過程是在Windows7+Cygwin上進行的。
給出具體步驟先:
1、在Cygwin上執行
python -c "import rm_pdb; rm_pdb.server()" //這是除錯服務端(具體執行時請不要複製這段註釋文字)
輸入上面的指令後點回車,此步驟需要第3步
2、在你想除錯的py檔案中任意位置加入
import rm_pdb
rm_pdb.pdb().set_trace()
import rm_pdb是檔案頭,這個大家應該都清楚該放在哪裡,rm_pdb,pdb().set_trace()類似設定斷點的位置,系統執行到這句話時,除錯服務端就會顯示相關程式碼,然後你就可以除錯了。
easy_install http://ptcoding.googlecode.com/svn/trunk/rm_pdb
然後我們開啟相關的連結就可以進行除錯了,除錯方法和使用pdb進行除錯一樣。
比如我在瀏覽器中輸入http://localhost/www/test/imgtest.py。
除錯終端就可以出現如下介面,然後我們就可以使用pdb一些常用的除錯指令對系統進行除錯了 。
pdb一些常用的指令,大家可以參考一下: http://blog.csdn.net/redhat7890/article/details/5703617
特別感謝一下提供這個方法的大神,原文見:http://apt-blog.net/rm_pdb_module_for_debugging_multiprocessing
最後再扯些廢話,上面提供的這個方法,只適合一些小工程,自己除錯使用,如果您是大型python web專案的構建者,建議使用sentry,這個東東可以記錄使用者瀏覽網頁的時候遇到的一些異常和錯誤,具體介紹見:http://blog.csdn.net/largetalk/article/details/8640854