调试COM引用计数器

时间:2011-11-29 09:54:13

标签: c++ debugging com reference

在一个项目中,我正在与.EXE服务器中的一个对象进行通信(该对象为我执行昂贵的查询,应该对其进行缓存),而且我的引用计数似乎错了,这使得服务器进程免费它仍然引用一个对象,使主机进程以奇怪而有趣的方式失败,涉及丢失数据并向供应商发送错误报告。

如果以某种方式使用refcount降至零的代理对象,有没有办法可以让COM提出一些可在调试器中检测到的条件?

1 个答案:

答案 0 :(得分:0)

使用原始接口可能无法实现这一点 - 引用计数由COM服务器维护,它的实现方式取决于服务器 - 实现是在服务器代码中,所以除非你有源代码并且可以调试服务器,你无法达到它。

但是,通过手动调用AddRef和Release可能会导致问题。如果是这种情况,您可以使用RAII /智能指针解决方案。 ATL提供了一个,但如果由于某种原因你无法使用它,那么创建自己的就足够了。然后,您不仅可以创建或使用提供的调试工具来跟踪引用计数,那么您首先就不太可能出错。