2010-10-31 199 views
1

使用WingIDE調試Web應用程序,我在一些Python代碼中設置了斷點,該代碼在提交Web表單時運行。就在斷點之前,我已經插入了「導入wingdbstub」來激活遠程解除綁定。但是,執行不會停止在斷點處。我知道代碼正在運行,因爲如果我在斷點之前插入'raise exception(sys.modules)',執行停止,並且在我的瀏覽器中出現一個回溯,顯示wingdbstub已加載。WingIDE遠程調試

如果我將鼠標懸停在狀態欄中的錯誤圖標上,對話框將顯示「沒有調試進程/偵聽TCP/IP 50005上的連接」允許主機127.0.0.1「。 a)bug圖標從綠色變爲白色時,我知道我已經'失去'了調試模式,b)調試工具欄按鈕(步入,跳出,跳出等)消失。

我試着刪除已編譯的.pyc文件,以便在模塊下次運行時重新編譯,但問題仍然存在。

如何檢查Wing是否在正確的端口上偵聽?奇怪的是,遠程調試有時會起作用,但大多數情況下它不會。

任何幫助,將不勝感激。爲了記錄,我使用Python 3.1,CherryPy 3.20和WingIDE Personal 3.2.11。

艾倫

回答

1

在Windows中,我已經經歷了你提到的相同的行爲,即遠程調試有時工作,但往往是「卡住」。我發現在解決這種情況下有用的幾件事情:

  1. 確保/從正在使用的端口由WingIDE和這個進程被調試您的防火牆沒有阻塞交通。 (在我的情況下,我必須解除阻止wing.exe 我試圖在Windows防火牆中進行調試的程序。)
  2. 確保在失敗的調試會話後沒有累積任何殭屍python進程。這些可以保持打開與IDE的連接,使新生成的實例無法連接。 (在Windows下,你可以使用tasklist命令檢查正在運行的Python實例,netstat -anp tcp將顯示卡在TIME_WAIT狀態的任何插座。)
  3. import wingdbstub語句後立即插入一個time.sleep(10)電話。從控制檯啓動程序,確保它在IDE中連接(調試圖標將變爲綠色),然後點擊IDE中的「暫停」按鈕,然後點擊「跳出」。 (我不能解釋爲什麼,但是在調試連接已經不可靠了之後,這似乎對我來說已經好幾次了。)

上述建議可能也適用於Linux,但我在Windows下至今只遇到過這個問題...

+0

謝謝evadeflow - 我會嘗試一下你的建議,看看我如何繼續。問候。 – 2010-12-02 19:49:45