0

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

我想知道是否有一个工具可以检查哪些 COM 对象是活动的或在堆栈上。

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

4

3 回答 3

1

Randomly typing in "COM Inspector" in Google produced this link. Looks good, no personal experience. Run this query yourself to find others.

于 2010-07-30T15:14:06.560 回答
1

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

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

[*] 虽然 ATL 的 CComObjectStack<> 对于单元测试来说非常方便。

于 2010-07-30T14:35:17.287 回答
1

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

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

查看加载了哪些命令栏有点复杂

于 2010-07-30T21:05:36.073 回答