c++ - 调试 COM 引用计数器

标签 c++ debugging com reference

在一个项目中,我正在与 .EXE 服务器中的一个对象交谈(该对象为我执行昂贵的查询,应该被缓存),我似乎弄错了我的引用计数,这使得服务器进程空闲它仍然引用一个对象,使主机进程以奇怪和有趣的方式失败,包括丢失数据并向供应商发送错误报告。

如果以某种方式使用其引用计数已降至零的代理对象,我是否可以要求 COM 提出一些可在调试器中检测到的条件?

最佳答案

这不太可能使用原始接口(interface) - 引用计数由 COM 服务器维护,它的实现方式取决于服务器 - 实现在服务器代码中,所以除非你有源代码并且可以调试服务器,您无法访问它。

但是,您的问题很可能是由手动调用 AddRef 和 Release 引起的。如果是这种情况,您可以使用 RAII/智能指针解决方案。 ATL 提供了一个,但如果出于某种原因您不能使用它,创建您自己的也很容易。然后,您不仅可以创建或使用提供的调试工具来跟踪引用计数,而且一开始就不太可能出错。

关于c++ - 调试 COM 引用计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8308793/

相关文章:

c++ - 从 1D 数组表示计算 3D 索引的有效方法

c++ - 指向固定大小数组的指针的析构函数

c# - c# 类的属性在 visual basic 6.0 中不可见

com - 无法在 VC++ 2008 中的 COM 接口(interface)方法中输出/检索参数

c++ - 内存泄漏的长期后果是什么?

c++ - Arduino IDE 在单独的文件中初始化 char[]

C++ "list iterator not dereferenceable"错误

javascript - javascript中有没有办法获取对象的范围?

c# - 在 Visual Studio 调试器中打印漂亮的对象图

c# - 从 VC++ 通过 COM 实例化 C# 对象的类未注册错误