Поделиться через


Собственные объекты отладчика в расширениях 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);

См. также

Собственные объекты отладчика в расширениях JavaScript

Собственные объекты отладчика в расширениях JavaScript — рекомендации по проектированию и тестированию

Скрипты отладчика JavaScript

Примеры скриптов отладчика JavaScript