情景:
Delphi ISAPI dll使用Delphi XE编写,32位。
ISAPI dll在Win 7 64企业桌面上运行IIS 7.5 机。
DLL运行正常。
使用Run-> Attach to调试Delphi XE IDE中的ISAPI DLL 过程:
启动ISAPI DLL并附加到wpw3.exe * 32进程中 调试器 - 可以在ISAPI上下文中运行时跟踪和调试代码。
问题:
我的硬盘上周死了,我得到了一个新的Win 7安装 - 标准企业范围Win 7 64企业形象(与我的不一样) 以前的Win 7 64安装)。
现在,当我进入Run-> Attach to Process时,我再也看不到了 wpw3.exe * 32按名称进程,尽管它在任务管理器中可见 按名字。在“附加到”上调用“show system processes”选项 进程'对话框没有帮助。
我现在所看到的(我以前从未>在我的旧部署中看到过)是 一个很长的'通用'系统进程列表,但没有PID “系统”以外的描述。
其中一个进程是我的wpw3.exe * 32进程,我已经确定了 它的PID使用MS的Process Explorer。但如果我试着依附 那个过程我收到一条错误信息 - '无法创建流程 - 访问被拒绝' - 所以我无法调试。 (相同的错误消息'错误 打开过程,Access denied'也在Process Explorer中显示 某些属性,虽然过程的描述性名称' wpw3.exe * 32'在那里可见,与PID相关联。)
如何获取Run-> Attach to process对话框以显示 正确的wpw3.exe * 32进程名称并附加到它,所以我可以调试?
这是德尔福问题吗?一个IIS问题? ISAPI问题?这是一个问题 - 即缺乏描述性的过程名称和无法附加到过程是由同样的问题引起的;或者是这两个问题:一个问题是缺乏描述性名称,另一个问题是无法附加到过程中?
(不想使用 - 无法真正使用 - webApp调试器 - 这些是完全按照它们部署到生产的ISAPI dll 在IIS中编写和调试 - 我需要看到它们在IIS中运行 上下文。)
用这种方式调试ISAPI dll已有好几年了,不同版本的Delphi以及各种操作系统和服务器环境没有任何问题 - 以前从未遇到过这个问题。我很难过。
答案 0 :(得分:5)
我的帐户拥有管理员权限,但我觉得我应该尝试以管理员身份运行DelphiXE - 以“以管理员身份运行”选项启动它。
我得到提示'你想允许......' - 点击是,Delphi跑了。设置我的进程并连接并跟踪我的代码 - 进程名称现在可见,我可以附加到我的IIS进程并在Delphi调试器中进行调试。
无论出于何种原因,我无需在之前的部署中执行此步骤 - 但问题已解决。
答案 1 :(得分:0)
如果要在64位操作系统上调试32位ISAPI dll,可以使用以下过程。
这假设您已按照其他步骤允许32位ISAPI dll工作。
停止IIS
net stop w3svc
以调试模式启动32位工作进程
%SYSTEMROOT%\ SysWOW64 \ inetsrv \ w3wp -debug
附加到调试器中的w3wp。正如您所指出的,您需要运行具有提升权限的Delphi才能工作。