如何调试在ASP页面中创建的Visual Studio 6.0中的COM对象?

问题描述:

我有一个旧的C++ COM组件,它必须保持Visual Studio 6.0格式。我不知道如何在实际的COM组件中调试代码。如何调试在ASP页面中创建的Visual Studio 6.0中的COM对象?

我能够在调试模式下创建它,添加断点并将其附加到dllhost.exe进程,但Visual Studio环境只会显示从dllhost.exe反汇编而不是我的源代码(它也是不停止在断点上)。

我记得前一段时间有一种方法可以让你的调试动作(即当Visual Studio 6.0询问你的可执行文件启动你的d​​ll时)使IIS(或inetinfo.exe)目标和IIS运行在单一过程模式下。有一个注册表键你需要改变,但谷歌搜索没有帮助。

如果是基于VB6的COM组件,则可以在VB6中打开该项目并运行它(DLL项目无法运行)。项目属性有一些选项,可以让它运行,以便它自己运行&注册表。

现在,尝试点击ASP页面,该页面会调用COM组件。在类文件中设置的断点将被击中,因为调用是从ASP页面进行的。

首先,PDB文件(在编译过程中生成)应该与DLL具有相同的目录(可以在项目属性中设置)。

如果你的对象不使用某些特定ASP-功能(请求,响应,Session对象),您可以复制它的调用代码通过设置Cscript.exe来.vbs文件和调试your.vbs作为调试对象程序。

有解释(for example)如何调试ISAPI DLLs - 它们也适用于您的COM对象(从操作系统/调试器的角度来看,这两个DLL都加载到IIS进程中)。注意你的IIS版本和进/出进程内的东西。

最后,如果没有其他帮助,您可以通过OutputDebugString函数添加一些日志记录,并在免费DebugView程序中看到它。