Метод ICorDebugSymbolProvider2::GetGenericDictionaryInfo
Получает универсальную карту словаря
Синтаксис
HRESULT GetGenericDictionaryInfo(
[out] ICorDebugMemoryBuffer** ppMemoryBuffer
);
Параметры
ppMemoryBuffer
[out] Указатель на адрес объекта ICorDebugMemoryBuffer , содержащего универсальную карту словаря. Дополнительные сведения см. в разделе "Примечания".
Комментарии
Примечание
Этот метод доступен только в машинном коде .NET.
Карта состоит из двух разделов верхнего уровня.
Каталог, содержащий относительные виртуальные адреса (RVA) всех словарей, включенных в эту карту.
Выровненная по байтам куча , содержащая сведения о создании экземпляра объекта. Она запускается сразу после последней записи каталога.
Каталог
Каждая запись в каталоге ссылается на смещение в куче; то есть это смещение относительно начала кучи. Значения отдельных записей, не обязательно должны быть уникальными; несколько записей каталога могут указывать на одно и то же смещение в куче.
Часть каталога универсальной карты словаря имеет следующую структуру.
Первые 4 байта содержит число записей словаря (т. е. число относительных виртуальных адресов в словаре). Мы будем называть это значение N. Если задан высокий бит, записи сортируются по относительному виртуальному адресу в порядке возрастания.
Ниже приведены N записей каталога. Каждая запись состоит из 8 байт в двух 4-байтовых сегментах.
Байты с 0 по 3: RVA; относительный виртуальный адрес словаря.
Байты с 4 по 7: смещение; смещение относительно начала кучи.
Куча
Размер кучи может быть вычислен модулем чтения потока путем вычитания длины потока из размера каталога + 4. Другими словами:
Heap Size = Stream.Length – (Directory Size + 4)
где размер каталога равен N * 8
.
Формат каждого элемента сведений о создании экземпляра в куче выглядит следующим образом.
Длина этого элемента сведений о создании экземпляра в байтах в сжатом формате ECMA метаданных. Значение исключает эти сведения о длине.
Число универсальных типов экземпляров ( T) в сжатом формате метаданных ECMA.
Типы T, каждый из которых представлен в формате сигнатуры типа ECMA.
Включение длины для каждого элемента кучи позволяет простую сортировку раздела каталога без влияния на кучу.
Требования
Платформы: см. раздел Требования к системе.
Заголовок: CorDebug.idl, CorDebug.h
Библиотека: CorGuids.lib
версии платформа .NET Framework: доступно с версии 4.6, только .NET Native
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по