调试COM可执行文件

时间:2016-12-28 16:56:23

标签: visual-studio-2010 visual-c++ com

我正在使用VS 2010中的Visual C ++开发可执行COM对象。现在我需要调试它。但是在哪里通过使用此COM的应用程序? 如果我将它放入debugging types,则应用程序启动,但不会通过COM代码中的断点。

UPD:

我的项目是进程外COM服务器。

我已使用Native Only - Autorun and + client applications以及两种调试模式(run client application and attach to process from VS COM projectmyCom.exe /RegServr进行了测试。没有这些情况我没有成功调试。调试断点未激活。我已经从cmd提示符sudo运行,但他没有帮助。如何解决这个问题?

UPD2:

我发现如果我运行的客户端应用程序使用我的COM服务器构成另一个IDE,我当前的IDE项目IDE将开始查看断点并完成它们。如何实现此行为?为什么在将客户端应用程序作为普通应用程序运行时,COM项目中的断点无效?

2 个答案:

答案 0 :(得分:0)

可能你已经完成了以下部分或全部工作,但在很多情况下,这些问题困扰着我们,因为我们看不到最明显的问题。

确保可执行文件加载了实现com对象的dll的正确版本。 “正确”版本是您当前构建的版本(或者更确切地说是您为其创建pdb文件的dll版本)。

确保已设置debugging命令的项目的调试器类型设置为“Native Only”(默认为“Auto”)。

如果您附加到可执行程序进程,请确保“附加到”多个选择列表至少包含“本机代码”。

答案 1 :(得分:0)

  1. 启动使用您开发的COM对象的应用程序。
  2. 使用VS,调试/附加到进程。
  3. 在COM对象源代码中设置适当的断点。
  4. 修改

    如果调试断点未激活,则通常意味着源可能与COM对象的源不同。尝试做一个干净的项目,并重建所有。 确保加载并注册了正确的COM服务器,即Debug目录中的那个。你可以通过使用sysinternals中的procexp来看到这一点,它显示了为你的测试应用程序加载的dll。 - https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx

    另一件可能出错的事情是您没有注册.DLL / .EXE的Debug版本,在这种情况下请确保注册正确的版本。

相关问题