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


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

Собственные объекты отладчика представляют различные конструкции среды отладчика. Расширения JavaScript имеют прямой доступ к системе типов базового языка. Этот доступ выражается через понятие объектов типа. В этом разделе описываются свойства, связанные с объектами типа.

Собственные объекты отладчика представляют различные конструкции и поведение среды отладчика. Объекты можно передать в расширения JavaScript или получить из них, чтобы управлять состоянием отладчика.

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

Общие сведения о работе с JavaScript см. в статье "Скрипт отладчик JavaScript".

Объекты типа

Объект типа можно получить несколькими способами:

  • Из объекта: если скрипт имеет собственный объект в JavaScript, свойство targetType можно получить для получения объекта типа , представляющего статический тип собственного объекта.
  • Из узла: API host.getModuleType можно вызвать для возврата объекта типа для любого типа, определенного в определенном модуле.

После получения объекта типа он имеет следующие свойства:

ИмяПодпись Описание
имяНедвижимостьВозвращает имя типа.
размерНедвижимостьВозвращает размер типа в виде 64-разрядного значения.
typeKindНедвижимостьВозвращает тип типа в виде строки. Это может быть одно из следующих значений: "udt", "указатель", "memberPointer", "array", "function", "typedef", "enum" или "встроенный".
базовый типНедвижимостьВозвращает объект типа для типа, на котором основан этот тип. Это не иллюстрирует наследование в C++. Для типа указателя это тип указанной вещи. Для типа массива это тип, содержащийся в массиве.
ПоляНедвижимостьВозвращает объект, имеющий все именованные поля типа, доступные как именованные свойства. Значение каждого свойства — это объект поля , как описано ниже.
baseClassesНедвижимостьВозвращает массив всех непосредственных базовых классов типа. Каждый объект в массиве является объектом базового класса , как описано ниже.
functionReturnTypeНедвижимостьДля типов функций возвращается объект типа, представляющий возвращаемый тип функции.
functionParameterTypesНедвижимостьДля типов функций возвращается массив объектов типов, представляющих типы параметров функции.
Конвенция вызова функцийНедвижимостьДля типов функций это возвращает соглашение о вызове функции в виде строки. Это может быть одно из следующих значений: "неизвестно", "__cdecl", "fastcall", "stdcall" или "thiscall".
pointerKindНедвижимостьДля типов указателей это возвращает тип указателя в виде строки. Это может быть одно из следующих значений: "standard", "reference", "rValueReference" или "cxHat".
Тип членаНедвижимостьДля типов указателей, которые являются указателями элементов, возвращается объект типа, представляющий класс-член.
isGenericНедвижимостьВозвращает, является ли тип универсальным или нет. Это возвращает значение true для типов шаблонов.
genericArgumentsНедвижимостьДля типов, которые являются универсальными, это возвращает массив универсальных аргументов. Такие аргументы могут быть аргументами типа или могут быть константными значениями.
isBitFieldНедвижимостьВозвращает значение, указывающее, является ли хранилище для типа битовым полем или нет.
позиции полей битовНедвижимостьДля типов, представляющих хранилище битовых полей, возвращается битовое описание поля, указывающее позиции битового поля.

Все эти записи присутствуют во время инициализации на этапе 2.

Объекты полей

Каждое поле в типе описывается объектом поля со свойствами следующим образом:

ИмяПодпись Описание
имяНедвижимостьВозвращает имя поля.
типНедвижимостьВозвращает объект типа, представляющий статический тип поля.
locationKindНедвижимостьВозвращает тип расположения (хранилище) для поля в виде строки. Это может быть одно из следующих значений: "member", "static", "constant" или "none".
смещениеНедвижимостьДля полей с типом расположения, указывающим смещение (например, "member"), это возвращает смещение поля в его содержающем типе в виде 64-разрядного значения.
расположениеНедвижимостьДля полей с типом расположения, указывающим расположение (например, "статический"), это возвращает расположение поля в качестве объекта расположения.
ценностьНедвижимостьДля полей с типом расположения, указывающим значение (например, "константа"), это возвращает значение поля.

Все эти записи присутствуют на этапе 2 инициализации.

Объекты базового класса

Каждый базовый класс в типе описывается объектом базового класса со свойствами следующим образом:

ИмяПодпись Описание
имяНедвижимостьВозвращает имя базового класса.
смещениеНедвижимостьВозвращает смещение этого базового класса в типе, который его содержит.
типНедвижимостьВозвращает объект типа, представляющий статический тип базового класса.

Все эти записи присутствуют на этапе 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