如何使用delphi调试器调试isapi扩展?

时间:2017-05-25 22:39:19

标签: delphi

我正在尝试调试用Delphi编写的ISAPI扩展。扩展工作正常,但我似乎无法调试它(即设置一个断点和单步代码)。

这就是我所做的:

  • 以管理员身份推出Delphi Rad Studio。
  • 确保通过在浏览器中访问扩展程序来加载扩展程序。
  • 选择运行 - >附加到流程。
  • 选择了w3wp.exe进程(未选中“暂停后暂停”)
  • 在我的默认处理程序操作
  • 的开头设置断点
  • 尝试再次访问扩展程序

但是我的处理程序中永远不会触发断点(见下图):

enter image description here

1 个答案:

答案 0 :(得分:13)

您的方法实用性有限,因为您只能在应用程序启动后开始调试。如果你需要从第一个请求调试它,这是没用的。这就是你应该做的:

IIS设置:

1)在IIS上,在“默认网站”下创建一个新的Web应用程序。

2)默认网站下的每个应用程序都应使用相同的应用程序池DefaultAppPool。确保此应用程序池无需调试即可运行ISAPI应用程序。如果您无法使用它运行ISAPI应用程序,那么您也无法对其进行调试。

应用程序设置(Delphi IDE):

在Delphi中设置应用程序(任何XE + IDE都有类似的设置)

1)以管理员身份运行Delphi。并非绝对必要,但可以使许多事情变得更容易,并避免许多问题。

2)在Delphi Ide中,选择Run - >参数。通知主机应用程序和参数,如下图所示:

Delphi App setup for ISAPI debugging W3WP.exe是IIS Worker Process可执行文件,我们将以交互方式运行它以调试ISAPI应用程序。请记住,存在2个版本的w3wp.exe:一个32位在C:\ Windows \ SysWow64下,另一个64位在C:\ Windows \ System32下。 您必须使用与您的应用程序匹配的正确版本。

3)停止万维网发布服务。您可以使用" net stop W3SVC"从提升的命令提示符,或使用Windows服务控制台。

W3SVC停止后,只需从Delphi IDE运行应用程序并从浏览器中调用它。应用程序加载时,将激活所有断点。您可以像任何其他Delphi应用程序一样进行调试。