我正在使用VS 2010中的Visual C ++开发可执行COM对象。现在我需要调试它。但是在哪里通过使用此COM的应用程序?
如果我将它放入debugging types
,则应用程序启动,但不会通过COM代码中的断点。
UPD:
我的项目是进程外COM服务器。
我已使用Native Only
- Auto
和run and + client applications
以及两种调试模式(run client application and attach to process from VS COM project
和myCom.exe /RegServr
进行了测试。没有这些情况我没有成功调试。调试断点未激活。我已经从cmd提示符sudo
运行,但他没有帮助。如何解决这个问题?
UPD2:
我发现如果我运行的客户端应用程序使用我的COM服务器构成另一个IDE,我当前的IDE项目IDE将开始查看断点并完成它们。如何实现此行为?为什么在将客户端应用程序作为普通应用程序运行时,COM项目中的断点无效?
答案 0 :(得分:0)
可能你已经完成了以下部分或全部工作,但在很多情况下,这些问题困扰着我们,因为我们看不到最明显的问题。
确保可执行文件加载了实现com对象的dll的正确版本。 “正确”版本是您当前构建的版本(或者更确切地说是您为其创建pdb文件的dll版本)。
确保已设置debugging命令的项目的调试器类型设置为“Native Only”(默认为“Auto”)。
如果您附加到可执行程序进程,请确保“附加到”多个选择列表至少包含“本机代码”。
答案 1 :(得分:0)
修改
如果调试断点未激活,则通常意味着源可能与COM对象的源不同。尝试做一个干净的项目,并重建所有。 确保加载并注册了正确的COM服务器,即Debug目录中的那个。你可以通过使用sysinternals中的procexp来看到这一点,它显示了为你的测试应用程序加载的dll。 - https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx
另一件可能出错的事情是您没有注册.DLL / .EXE的Debug版本,在这种情况下请确保注册正确的版本。