在混合托管/非托管流程中转储CCW和RCW
时间:2020-03-06 14:39:56 来源:igfitidea点击:
我有一个混合的托管/非托管环境(Visual Studio和ReSharper),我怀疑CCW或者RCW泄漏。有什么方法可以转储所有当前分配的包装并标识其源/目标?我有WinDbg,SOS和SOSEx,因此可以使用!syncblk命令查看RCW和CCW的总数。我只想查看对象,因此可以对它们调用!gcroot,否则可以检查可疑对象。
解决方案
我们应该能够使用!dumpheap
来做到这一点。 !dumpheap -stat
将让我们找到类型名称(如果我们还不知道它们的话),然后!dumpheap -type {typename}
将为我们提供可以传递给!gcroot
的各个对象地址。 。