这是场景。我正在使用Visual Studio2010。我有一个C++ COM dll。该dll由另一个不是COM项目的C++ dll项目使用。第二个dll将API公开给客户端应用程序。依赖关系为客户端->非COM dll-> COM dll。我想从任何客户端应用程序调试COM dll。
这是我已经尝试过的东西。
创建了一个使用非COM dll的C++ win32控制台应用程序。 保留COM DLL和非COM DLL以及win32应用程序的调试目录中的相应pdb文件。在选项->调试->符号中,我选择了调试目录的路径,并选中了“仅指定模块”选项以加载这些文件。 设置所有包含和库依赖项。 现在,我可以成功运行该应用程序了。但是在调试时,我只能通过按F11键导航到非COM dll,并且从此dll到COM dll的作用相同,F11导航不起作用。 当我使用两个非COM dll和一个客户端应用程序尝试此操作时,我可以导航到最里面的dll。至此,我意识到我应该更改相应的注册表项,以指向位于客户端应用程序的调试目录中的COM dll文件,但是不走运!
很抱歉,我无法共享代码或进行详细描述。
有什么办法吗? 您可以在COM dll源代码中设置一个断点,然后将其附加到名为“dllhost.exe
”的进程。每当本机dll调用COM dll时,都会命中断点。