这是场景。我正在使用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时,都会命中断点。

    10-04 12:08
    查看更多