我有一个旧的C ++ COM组件,它必须保持Visual Studio 6.0格式。我不能为我的生活弄清楚如何在实际的COM组件中调试代码。
我能够在调试模式下构建它,添加断点并将其附加到dllhost.exe进程,但Visual Studio环境只显示dllhost.exe的反汇编而不是我的源代码(它也没有不要在断点处停下来。
我记得前一段时间有一种方法可以使IIS(或inetinfo.exe)成为调试操作的目标(即当Visual Studio 6.0要求您启动dll的可执行文件时)和IIS将以单一进程模式运行。有一个注册表项需要更改,但谷歌搜索没有帮助。
答案 0 :(得分:2)
如果它是基于VB6的COM组件,则可以在VB6中打开项目并运行它(无法运行DLL项目)。项目属性有一些选项可以让它运行,以便运行和运行。注册自己。
现在,尝试点击ASP页面,该页面调用COM组件。将触发类文件中设置的断点,因为调用是从ASP页面进行的。
答案 1 :(得分:0)
首先,PDB文件(在编译期间生成)应该与DLL在同一目录中(可以在项目属性中设置)。
如果您的对象不使用某些特定于ASP的功能(请求,响应,会话对象),您可以将其调用代码复制到.vbs文件并通过将 cscript.exe your.vbs 设置为调试调试目标程序。
有解释(for example)如何调试ISAPI DLL - 它们也适用于您的COM对象(从OS /调试器的角度来看,这两个DLL都加载到IIS进程中)。注意你的IIS版本和进程外/进程中的东西。
最后,如果没有其他帮助,您可以通过OutputDebugString函数添加一些日志记录,并在免费DebugView程序中查看。