Как проверить 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
{
...