在Apache上调试Delphi ISAPI Dll

时间:2009-07-16 15:16:32

标签: delphi apache

在调试在Apache下运行的ISAPI Dll(TWebModule)时,我经常陷入困境,我遇到错误。错误框上的标题是“调试程序错误通知”,并包含在消息中,其中包括: “c:\ program files \ Apache \ bin \ httpd.exe出现错误消息.......”

当发生这种情况时,会弹出cpu窗口,我必须点击错误消息上的“确定”按钮。在程序流程继续之前,我可能需要做3-5次。

这发生在我的笔记本电脑上。我有一个具有相同配置的桌面(据我所知),我没有这个问题。两种操作系统都是XP。所以显然某处有一些设置或过时的文件。

此外,我注意到如果首次运行我的网站,当Apache不在调试环境中时似乎没有这个问题。 (即在服务中启动apache,运行我的Web应用程序,停止服务,然后在Delphi环境中对其进行调试)。

任何想法???

3 个答案:

答案 0 :(得分:0)

虽然它没有直接回答如何使用Apache进行调试,但另一种运行良好的备用调试技术是使用idDebugger(靠近该页面的底部)。它允许您直接从IDE调试ISAPI DLL,而无需启动/停止服务。我现在没有开发ISAPI DLL。

答案 1 :(得分:0)

为了避免这个问题和其他问题,我已经开始了xxm。它是TWebModule的替代品,并使用单独的包装器与IIS一起运行,但也有Apache,FireFox和IE包装器!它还使用了混合HTML-Delphi-source,开发模式包装器进行解析和自动编译,以提供类似Web脚本的环境。

此外,InternetExplorer插件在调试器中运行良好(使用iexplore.exe作为主机应用程序)。

答案 2 :(得分:0)

错误代码0xC0000008为Status_Invalid_Handle。例如,当您尝试关闭从未打开或已关闭的句柄时,CloseHandle可以抛出这种情况。当您在调试器外部运行时,可能不会发生错误,因为除非正在调试它,否则API不会引发异常

如果您在调试器无权访问的代码中获得该异常,则调试器将显示CPU窗口。查看调用堆栈,找到最接近异常来源的代码中的位置。

它也可能根本没有出现在您的代码中。尝试在不安装模块的情况下执行相同的调试例程。你还有错误吗?