如何在.NET中使用SOS调试扩展来检查类型的IFaceMap

时间:2015-08-03 08:38:50

标签: .net debugging windbg sos

是否可以使用SOS调试扩展输出类型的IFaceMap? DumpMT命令仅提供类型实现的接口数,但它不提供任何命令来自己输出IFacemap条目

 !DumpMT -MD 007938ec 
 EEClass:         00791310 
 Module:          00792e94 
 Name:            DebugTest.Customer 
 mdToken:         02000004
 BaseSize:        0x10 
 ComponentSize:   0x0 
 Slots in VTable: 10 
 Number of IFaces in IFaceMap: 1

!DumpHeap也不输出接口。

1 个答案:

答案 0 :(得分:1)

我从未在SOS或SOSEX中遇到过这样的功能。我看到的最接近的命令来自NetExt (Codeplex)。 NetExt是开源的,所以如果你想查看内部,你可以阅读源代码,看看它是如何找到接口信息的。

一个命令是!windex -implement <InterfaceName>。但是,这也没有列出所有类型的接口,而是相反:所有实现接口的类型。这听起来对你的案子很有意思。

另一个是!wclass <MethodTable>,其输出类似于.NET反编译代码。在类定义级别,您可以看到已实现的接口(摘自NetExt文档):

0:00> !wclass 00000001045f0c68
...
namespace System.Web.Configuration {

 internal class HttpConfigurationSystem: System.Configuration.Internal.IInternalConfigSystem
 {
...