如何使用delphi调试器调试isapi扩展?
我正在尝试调试用Delphi编写的ISAPI扩展。扩展工作得很好,但我似乎无法调试它(即设置断点并单步执行代码) 以下是我所做的:如何使用delphi调试器调试isapi扩展?,delphi,Delphi,我正在尝试调试用Delphi编写的ISAPI扩展。扩展工作得很好,但我似乎无法调试它(即设置断点并单步执行代码) 以下是我所做的: 以管理员身份启动Delphi Rad Studio 通过在浏览器中访问扩展名,确保已加载扩展名 选择运行->附加到进程 已选择w3wp.exe进程(未选中“附加后暂停”) 在默认处理程序操作的开始处设置断点 试图再次访问扩展名 但是,在我的处理程序中从未触发断点(请参见下图): 您的方法的实用性有限,因为您只能在应用程序启动后开始调试。如果您需要从第一个请求开始
- 以管理员身份启动Delphi Rad Studio
- 通过在浏览器中访问扩展名,确保已加载扩展名
- 选择运行->附加到进程
- 已选择w3wp.exe进程(未选中“附加后暂停”)
- 在默认处理程序操作的开始处设置断点
- 试图再次访问扩展名
您的方法的实用性有限,因为您只能在应用程序启动后开始调试。如果您需要从第一个请求开始调试它,这是没有用的。这是您应该做的: IIS设置: 1) 在IIS上,在默认网站下创建新的web应用程序 2) 默认网站下的每个应用程序都应该使用相同的应用程序池DefaultAppPool。确保此应用程序池能够在不进行调试的情况下运行ISAPI应用程序。如果您不能使用它运行ISAPI应用程序,您也将无法调试它 应用程序设置(Delphi IDE): 在Delphi中设置应用程序(任何XE+IDE都有类似的设置) 1) 以管理员身份运行Delphi。不是绝对需要的,但使很多事情更容易,避免了很多问题 2) 在DelphiIDE中,选择Run->Parameters。通知主机应用程序和参数,如下图所示: W3WP.exe是IIS工作进程可执行文件,我们将以交互方式运行它以调试ISAPI应用程序。请记住,w3wp.exe有两个版本:一个是C:\Windows\SysWow64下的32位版本,另一个是C:\Windows\System32下的64位版本您必须使用与应用程序匹配的正确版本。 3) 停止万维网发布服务。您可以在提升的命令提示符下使用“net stop W3SVC”,也可以使用Windows服务控制台
W3SVC停止后,只需从DelphiIDE运行应用程序并从浏览器调用它。当应用程序应该加载并且所有断点都将被激活时。您可以像任何其他Delphi应用程序一样进行调试。我采用的另一种方法是将服务器端抽象到一个单一的多功能界面下,使其能够在IIS、Apache、SCGI或普通的“xxmHTTP”之间自由切换以进行调试