Compartir a través de


Objetos de depurador nativos en extensiones de JavaScript: objetos de tipo

Los objetos del depurador nativo representan varias construcciones del entorno del depurador. Las extensiones de JavaScript tienen acceso directo al sistema de tipos del lenguaje subyacente. Este acceso se expresa a través de la noción de objetos de tipo. En este tema se describen las propiedades asociadas a objetos de tipo.

Los objetos del depurador nativo representan diversas construcciones y comportamientos del entorno del depurador. Los objetos se pueden pasar a extensiones de JavaScript (o adquiridas en) para manipular el estado del depurador.

Para obtener información sobre las extensiones de JavaScript del objeto Debugger, vea Objetos de depurador nativo en extensiones de JavaScript.

Para obtener información general sobre cómo trabajar con JavaScript, consulte Scripting del depurador de JavaScript.

Objetos de tipo

Un objeto de tipo se puede adquirir de varias maneras:

  • Desde un objeto: si un script tiene un objeto nativo en JavaScript, se puede tener acceso a la propiedad targetType en ese objeto para obtener un objeto de tipo que represente el tipo estático del objeto nativo.
  • Desde host: se puede llamar a la API host.getModuleType para devolver el objeto de tipo para cualquier tipo definido en un módulo determinado.

Una vez adquirido el objeto de tipo, tiene las siguientes propiedades:

NombreSignatureDescripción
namePropiedadDevuelve el nombre del tipo.
sizePropiedadDevuelve el tamaño del tipo como un valor de 64 bits.
typeKindPropiedadDevuelve el tipo del tipo como una cadena. Puede ser uno de los siguientes valores: "udt", "pointer", "memberPointer", "array", "function", "typedef", "enum" o "intrinsic".
baseTypePropiedadDevuelve un objeto de tipo para el tipo en el que se basa este tipo. Esto no representa la herencia de C++. Para un tipo de puntero, este es el tipo de lo que apunta. Para un tipo de matriz, este es el tipo contenido en la matriz.
fieldsPropiedadDevuelve un objeto que tiene todos los campos con nombre del tipo accesibles como propiedades con nombre. El valor de cada propiedad es un objeto de campo como se describe a continuación.
baseClassesPropiedadDevuelve una matriz de todas las clases base inmediatas del tipo . Cada objeto de la matriz es un objeto de clase base como se describe a continuación.
functionReturnTypePropiedadPara los tipos de función, devuelve un objeto de tipo que representa el tipo de valor devuelto de la función.
functionParameterTypesPropiedadPara los tipos de función, devuelve una matriz de objetos de tipo que representan los tipos de parámetro de la función.
functionCallingConventionPropiedadPara los tipos de función, devuelve la convención de llamada de la función como una cadena. Puede ser uno de los siguientes valores: "unknown", "__cdecl", "fastcall", "stdcall" o "thiscall".
pointerKindPropiedadPara los tipos de puntero, devuelve el tipo de puntero como una cadena. Puede ser uno de los siguientes valores: "standard", "reference", "rValueReference" o "cxHat".
memberTypePropiedadPara los tipos de puntero que son punteros de miembro, devuelve un objeto de tipo que representa la clase miembro.
isGenericPropiedadDevuelve si el tipo es genérico o no. Esto devolverá true para los tipos de plantilla.
genericArgumentsPropiedadPara los tipos que son genéricos, devolverá una matriz de argumentos genéricos. Estos argumentos pueden ser argumentos de tipo o pueden ser valores constantes.
isBitFieldPropiedadDevuelve si el almacenamiento del tipo es un campo de bits o no.
bitFieldPositionsPropiedadPara los tipos que representan el almacenamiento de campo de bits, devolverá un tipo de descripción de campo de bits que indica las posiciones del campo de bits.

Todas estas entradas están presentes durante la inicialización de la fase 2.

Objetos field

Cada campo de un tipo se describe mediante un objeto de campo que tiene propiedades de la siguiente manera:

NombreSignatureDescripción
namePropiedadDevuelve el nombre del campo.
typePropiedadDevuelve un objeto de tipo que representa el tipo estático del campo.
locationKindPropiedadDevuelve el tipo de ubicación (almacenamiento) del campo como una cadena. Puede ser uno de los siguientes valores: "member", "static", "constant" o "none".
offsetPropiedadPara los campos que tienen un tipo de ubicación que indica un desplazamiento (por ejemplo, "miembro"), devuelve el desplazamiento del campo dentro de su tipo contenedor como un valor de 64 bits.
ubicaciónPropiedadPara los campos que tienen un tipo de ubicación que indica una ubicación (por ejemplo, "estática"), devuelve la ubicación del campo como un objeto de ubicación.
valuePropiedadPara los campos que tienen un tipo de ubicación que indica un valor (por ejemplo, "constante"), devuelve el valor del campo.

Todas estas entradas están presentes durante la inicialización de la fase 2.

Objetos de clase base

Cada clase base dentro de un tipo se describe mediante un objeto de clase base que tiene propiedades de la siguiente manera:

NombreSignatureDescripción
namePropiedadDevuelve el nombre de la clase base.
offsetPropiedadDevuelve el desplazamiento de esta clase base dentro de su tipo contenedor.
typePropiedadDevuelve un objeto de tipo que representa el tipo estático de la clase base.

Todas estas entradas están presentes durante la inicialización de la fase 2.

Ejemplo de código

Para obtener un ejemplo de código, consulte el script ImageInfo.js. Para obtener más información sobre los ejemplos de código, vea Scripts de ejemplo del depurador de 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);

Vea también

Objetos de depurador nativos en extensiones de JavaScript

Objetos de depurador nativos en extensiones de JavaScript: consideraciones de diseño y pruebas

Scripting del depurador de JavaScript

Scripts de ejemplo del depurador de JavaScript