设想:
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 以及在各种操作系统和服务器环境中没有任何问题 - 以前从未遇到过这个问题。我难住了。