4

设想:

  • Delphi ISAPI dll 使用 Delphi XE,32 位编写。

    ISAPI dll 在 Win 7 64 企业台式机上通过 IIS 7.5 运行。

    DLL 运行良好。

    使用 Run->Attach to Process 在 Delphi XE IDE 中调试 ISAPI DLL:

    启动 ISAPI DLL 并附加到调试器中的 wpw3.exe *32 进程 - 可以在 ISAPI 上下文中运行时跟踪和调试代码。

问题:

  • 我的硬盘上周坏了,我安装了新的 Win 7 - 标准的公司范围 Win 7 64 Enterprise 映像(与我之前的 Win 7 64 安装不同)。

    现在,当我进入运行->附加到进程时,我不再按名称看到 wpw3.exe *32 进程,尽管它在任务管理器中按名称可见。在“附加到进程”对话框中调用“显示系统进程”选项没有帮助。

    我现在看到的(我以前在旧部署中从未见过)是一长串带有 PID 的“通用”系统进程,但除了“系统”之外没有其他描述。

    其中一个进程是我的 wpw3.exe *32 进程,我已经使用 MS 的 Process Explorer 确定了它的 PID。但是,如果我尝试附加到该进程,我会收到一条错误消息 - “无法创建进程 - 访问被拒绝” - 所以我无法调试。(相同的错误消息“错误打开进程,访问被拒绝”也会在进程资源管理器中显示某些属性,尽管进程的描述性名称“wpw3.exe *32”在那里可见,与 PID 相关联。)

    如何让 Run->Attach to process 对话框显示正确的 wpw3.exe *32 进程名称并附加到它,以便我可以调试?

    这是德尔福问题吗?IIS 问题?ISAPI 问题?这是一个问题吗?即缺乏描述性的进程名称和无法附加到进程是由同一问题引起的;还是这两个问题:一个问题是缺少描述性名称,另一个问题是无法附加到流程?

    (不想使用 - 不能真正使用 - webApp 调试器 - 这些是 ISAPI dll,它们完全按照在 IIS 中编写和调试的方式部署到生产环境 - 我需要看到它们在 IIS 上下文中运行。)

  • 多年来一直以这种方式调试 ISAPI dll,使用不同版本的 Delphi 以及在各种操作系统和服务器环境中没有任何问题 - 以前从未遇到过这个问题。我难住了。

4

2 回答 2

5

我的帐户有管理员权限,但我觉得我应该尝试以管理员身份运行 DelphiXE –使用“以管理员身份运行”选项启动它。

我收到提示'你想允许...' - 单击是,Delphi 运行。设置我的进程并连接并跟踪我的代码 - 进程名称现在可见,我可以附加到我的 IIS 进程并在 Delphi 调试器中进行调试。

无论出于何种原因,我在之前的部署中都不必执行此步骤 - 但问题已解决。

于 2012-09-14T23:45:02.763 回答
0

如果您想在 64 位操作系统上调试 32 位 ISAPI dll,您可以使用以下过程。

这假定您已按照其他步骤允许 32 位 ISAPI dll 工作。

  1. 停止 IIS

    净停止 w3svc

  2. 在调试模式下启动 32 位工作进程

    %SYSTEMROOT%\SysWOW64\inetsrv\w3wp -debug

  3. 在调试器中附加到 w3wp。正如您所指出的,您需要以提升的权限运行 Delphi 才能使其工作。

于 2013-07-16T04:32:44.153 回答