使用COM并查询仍然“活着”的对象

时间:2010-07-30 14:12:41

标签: visual-studio arcobjects

我使用ArcObjects,ESRI的API为ArcGIS应用程序编程。

我想知道是否有一个工具可以检查哪些COM对象存在或处于堆栈状态。

我已经知道要释放它们,但我会检查每种方法,看看是否有剩余物。

3 个答案:

答案 0 :(得分:1)

据我所知,没有这样的工具。在最低级别,COM对象只是内存的特定二进制布局。分配内存的方式和位置取决于实现COM对象的代码。任何工具都只能检查它所处理的COM对象的内存。实际上,它只能检查同一个公寓中的COM对象,对于任何其他对象,它只能检查代理。

此外,COM对象永远不会在堆栈上分配[*];它们总是在堆中分配。

[*]尽管ATL的CComObjectStack<>对于单元测试而言非常方便。

答案 1 :(得分:1)

在Google中随机输入“COM Inspector”生成this link。看起来不错,没有个人经验。自己运行此查询以查找其他查询。

答案 2 :(得分:1)

如果您使用的是.NET,则应循环浏览使用AppDomain.CurrentDomain.GetAssemblies加载的所有程序集。

要查看加载了哪些扩展,请使用IExtensionManager循环扩展。

查看加载了哪些命令栏是a bit more complicated