2017-05-25 48 views
3

我想調試用Delphi編寫的ISAPI擴展。該擴展工作得很好,但我似乎無法調試它(即設置一個斷點和單步代碼)。如何使用delphi調試器調試isapi擴展?

這裏是我做了什麼:

  • 推出德爾福的RAD Studio以管理員身份。
  • 確保通過在瀏覽器中訪問擴展來加載擴展。
  • 選擇運行 - >附加到進程。
  • 選擇w3wp.exe進程(與「暫停後附上」未選中)
  • 在我的默認處理程序的動作開始時設置一個斷點
  • 試圖再次訪問擴展

然而斷點永遠不會在我的處理程序觸發(見下面的PIC):

enter image description here

+0

我使用[xxm](http://yoy.be/xxm)的另一種方法是將服務器端抽象爲單一的多功能接口,從而可以在IIS,Apache,SCGI或簡單的「 xxmHTTP'進行調試 –

回答

11

你的方法有一個有限的實用性,因爲你只能開始得不在你的應用程序啓動後進行gging。如果你需要從第一個請求中調試它,這是沒用的。這是你應該怎麼做:

IIS設置:

1)在IIS中創建默認網站下一個新的Web應用程序。

2)默認網站下的每個應用程序都應該使用相同的應用程序池DefaultAppPool。確保此應用程序池能夠在不進行調試的情況下運行ISAPI應用程序。如果您無法使用它運行ISAPI應用程序,則無法對其進行調試。

應用程序安裝(德爾福IDE):

設置在Delphi應用程序(任何XE + IDE也有類似的設置)

1)運行德爾福爲管理員。不是絕對必要的,但使許多事情更容易,並避免了很多問題。

2)在Delphi中,選擇運行 - >參數。通知主機應用程序和參數,如下圖所示:

Delphi App setup for ISAPI debugging W3WP.exe是IIS工作進程可執行文件,我們將以交互方式運行它以調試ISAPI應用程序。請記住,存在兩個版本的w3wp.exe:C:\ Windows \ SysWow64下的一個32位和C:\ Windows \ System32下的另一個64位。 您必須使用與您的應用程序相匹配的正確版本。

3)停止萬維網發佈服務。您可以在提升的命令提示符下使用「net stop W3SVC」,或者使用Windows服務控制檯。

W3SVC停止後,只需從Delphi IDE運行應用程序,然後從瀏覽器調用它。當應用程序加載並且所有斷點都將被激活時。您可以像其他任何Delphi應用程序一樣調試。