我试图调试一个用 Delphi 编写的ISAPI扩展。该扩展工作正常,但我似乎无法调试它(即设置断点和单步代码)。以下是我所做的:
然而,在我的处理程序中,断点从未被触发过(见下图):
col17t5w1#
你的方法实用性有限,因为你只能在你的应用程序启动之后才能开始调试。如果你需要从第一个请求开始调试,这是没有用的。这是你应该做的:
IIS安装程序:
1)在IIS上,在“默认网站”下创建新的Web应用程序。2)“默认网站”下的每个应用程序都应使用同一应用程序池DefaultAppPool。请确保此应用程序池能够在不进行调试的情况下运行ISAPI应用程序。如果无法使用此应用程序池运行ISAPI应用程序,则也无法对其进行调试。
应用程序安装( Delphi IDE):
在 Delphi 中设置应用程序(任何XE+ IDE都有类似的设置)1)以管理员身份运行 Delphi 。不是绝对必需的,但可以让很多事情变得更容易,避免很多问题。2)在 Delphi 中,选择运行-〉参数。通知主机应用程序和参数,如下图所示:x1c 0d1x W3WP.exe是IIS工作进程可执行文件,我们将以交互方式运行它来调试ISAPI应用程序。请记住,w3wp.exe有两个版本:一个32位版本位于C:\Windows\SysWow64下,另一个64位版本位于C:\Windows\System32下。您必须使用与应用程序匹配的正确版本。3)停止World Wide Web Publishing服务。您可以从提升的命令提示符使用“net stop W3 SVC”,或使用Windows服务控制台。一旦W3 SVC被停止,只需从 Delphi IDE运行应用程序并从浏览器调用它。当应用程序加载时,所有断点都将被激活。您可以像任何其他Delphi应用程序一样进行调试。
v64noz0r2#
我通过以下方式调试了API调用的 Delphi 2 Win32 DLL我有一个本地IIS站点,这个站点只有一个应用程序池,以管理员身份运行 Delphi xe 2
打开一个DLL项目并使用以下参数设置调试
打开任务管理器,单击详细信息后,我搜索w3wp.exe任务并检查执行任务的用户名,在我的情况下为RzKeyServerWebCore.Local,获取此任务的PID = 18232
返回 Delphi 单击运行-〉附加到进程并查找相同的PID 18232,单击附加。
向您的EndPoint发出请求, Delphi 中的结果是完整的调试
2条答案
按热度按时间col17t5w1#
你的方法实用性有限,因为你只能在你的应用程序启动之后才能开始调试。如果你需要从第一个请求开始调试,这是没有用的。这是你应该做的:
IIS安装程序:
1)在IIS上,在“默认网站”下创建新的Web应用程序。
2)“默认网站”下的每个应用程序都应使用同一应用程序池DefaultAppPool。请确保此应用程序池能够在不进行调试的情况下运行ISAPI应用程序。如果无法使用此应用程序池运行ISAPI应用程序,则也无法对其进行调试。
应用程序安装( Delphi IDE):
在 Delphi 中设置应用程序(任何XE+ IDE都有类似的设置)
1)以管理员身份运行 Delphi 。不是绝对必需的,但可以让很多事情变得更容易,避免很多问题。
2)在 Delphi 中,选择运行-〉参数。通知主机应用程序和参数,如下图所示:
x1c 0d1x W3WP.exe是IIS工作进程可执行文件,我们将以交互方式运行它来调试ISAPI应用程序。请记住,w3wp.exe有两个版本:一个32位版本位于C:\Windows\SysWow64下,另一个64位版本位于C:\Windows\System32下。您必须使用与应用程序匹配的正确版本。
3)停止World Wide Web Publishing服务。您可以从提升的命令提示符使用“net stop W3 SVC”,或使用Windows服务控制台。
一旦W3 SVC被停止,只需从 Delphi IDE运行应用程序并从浏览器调用它。当应用程序加载时,所有断点都将被激活。您可以像任何其他Delphi应用程序一样进行调试。
v64noz0r2#
我通过以下方式调试了API调用的 Delphi 2 Win32 DLL
我有一个本地IIS站点,这个站点只有一个应用程序池,
以管理员身份运行 Delphi xe 2
打开一个DLL项目并使用以下参数设置调试
打开任务管理器,单击详细信息后,我搜索w3wp.exe任务并检查执行任务的用户名,在我的情况下为RzKeyServerWebCore.Local,获取此任务的PID = 18232
返回 Delphi 单击运行-〉附加到进程并查找相同的PID 18232,单击附加。
向您的EndPoint发出请求, Delphi 中的结果是完整的调试