Собственные объекты отладчика в расширениях JavaScript — объекты типов
Собственные объекты отладчика представляют различные конструкции среды отладчика. Расширения JavaScript имеют прямой доступ к системе типов базового языка. Этот доступ выражается через понятие объектов типа. В этом разделе описываются свойства, связанные с объектами типа.
Собственные объекты отладчика представляют различные конструкции и поведения среды отладчика. Объекты можно передавать в расширения JavaScript (или получать в) для управления состоянием отладчика.
Сведения о расширениях JavaScript для объектов отладчика см. в разделе Собственные объекты отладчика в расширениях JavaScript.
Общие сведения о работе с JavaScript см. в разделе Скрипты отладчика JavaScript.
Объекты type
Объект типа можно получить несколькими способами:
- Из объекта. Если скрипт имеет собственный объект в JavaScript, для этого объекта можно получить доступ к свойству targetType , чтобы получить объект типа , представляющий статический тип собственного объекта.
- Из узла: api host.getModuleType можно вызвать для возврата объекта типа для любого типа, определенного в определенном модуле.
После получения объекта типа он имеет следующие свойства:
имя; | Сигнатура | Описание |
name | Свойство | Возвращает имя типа. |
size | Свойство | Возвращает размер типа в виде 64-разрядного значения. |
typeKind | Свойство | Возвращает тип типа в виде строки. Это может быть одно из следующих значений: "udt", "pointer", "memberPointer", "array", "function", "typedef", "enum" или "intrinsic". |
baseType | Свойство | Возвращает объект типа для типа, на котором основан этот тип. Это не означает наследование C++. Для типа указателя это тип объекта, на который указывает объект. Для типа массива это тип, содержащийся в массиве. |
fields | Свойство | Возвращает объект , который имеет все именованные поля типа, доступные в виде именованных свойств. Значением каждого свойства является объект поля , как описано ниже. |
baseClasses | Свойство | Возвращает массив всех непосредственных базовых классов типа . Каждый объект в массиве является объектом базового класса , как описано ниже. |
functionReturnType | Свойство | Для типов функций возвращается объект типа, представляющий тип возвращаемого значения функции. |
functionParameterTypes | Свойство | Для типов функций возвращается массив объектов типа, представляющих типы параметров функции. |
functionCallingConvention | Свойство | Для типов функций возвращается соглашение о вызове функции в виде строки. Это может быть одно из следующих значений: unknown, __cdecl, fastcall, stdcall или thiscall. |
pointerKind | Свойство | Для типов указателей возвращает тип указателя в виде строки. Это может быть одно из следующих значений: "standard", "reference", "rValueReference" или "cxHat". |
memberType | Свойство | Для типов указателей, являющихся указателями-элементами, возвращается объект типа, представляющий класс-член. |
isGeneric | Свойство | Возвращает значение, указывающее, является ли тип универсальным или нет. Это возвращает значение true для типов шаблонов. |
genericArguments | Свойство | Для универсальных типов возвращается массив универсальных аргументов. Такие аргументы могут быть аргументами типа или константными значениями. |
isBitField | Свойство | Возвращает значение, указывающее, является ли хранилище для типа битовое поле. |
bitFieldPositions | Свойство | Для типов, представляющих хранилище битовых полей, возвращается тип описания битового поля, указывающий позиции битового поля. |
Все эти записи присутствуют во время инициализации этапа 2.
Объекты field
Каждое поле в типе описывается объектом поля со следующими свойствами:
имя; | Сигнатура | Описание |
name | Свойство | Возвращает имя поля. |
тип | Свойство | Возвращает объект типа, представляющий статический тип поля. |
locationKind | Свойство | Возвращает тип расположения (хранилище) для поля в виде строки. Это может быть одно из следующих значений: member, static, constant или none. |
offset | Свойство | Для полей, имеющих тип расположения, указывающий на смещение (например, "член"), возвращается смещение поля внутри содержащего его типа в виде 64-разрядного значения. |
location | Свойство | Для полей, которые имеют тип расположения, указывающий расположение (например, "статический"), возвращает расположение поля в виде объекта location. |
значение | Свойство | Для полей с типом расположения, указывающим значение (например, "констант"), возвращается значение поля. |
Все эти записи присутствуют во время инициализации этапа 2.
Объекты базового класса
Каждый базовый класс в типе описывается объектом базового класса, имеющим свойства следующим образом:
имя; | Сигнатура | Описание |
name | Свойство | Возвращает имя базового класса. |
offset | Свойство | Возвращает смещение этого базового класса в пределах содержащего его типа. |
тип | Свойство | Возвращает объект типа, представляющий статический тип базового класса. |
Все эти записи присутствуют во время инициализации этапа 2.
Пример кода
Пример кода см. в скрипте ImageInfo.js. Дополнительные сведения о примерах кода см. в разделе Примеры скриптов отладчика JavaScript.
// fieldType references basic types that should be present in **ANY** symbolic information.
// Just grab the first module as the "reference module" for this purpose. We cannot grab
// "ntdll" generically as we want to avoid a situation in which the debugger opens a module (-z ...)
// from failing.
//
var moduleName = contextInheritorModule.__ComparisonName;
var typeObject = host.getModuleType(moduleName, field.fieldType, contextInheritorModule);
var result = host.createTypedObject(addr, typeObject);