Как проверить IFaceMap типа, используя расширение отладки SOS в.NET

Можно ли вывести IFaceMap типа, используя расширение отладки SOS? 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 ответ

Решение

Я никогда не сталкивался с такой функциональностью в 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
 {
...
Другие вопросы по тегам