Delen via


Ingebouwde debugger-objecten in JavaScript-extensies - Typeobjecten

Systeemeigen foutopsporingsprogrammaobjecten vertegenwoordigen verschillende constructies van de foutopsporingsprogrammaomgeving. JavaScript-extensies hebben directe toegang tot het type systeem van de onderliggende taal. Deze toegang wordt uitgedrukt via het begrip van typeobjecten. In dit onderwerp worden de eigenschappen beschreven die zijn gekoppeld aan typeobjecten.

Systeemeigen foutopsporingsprogrammaobjecten vertegenwoordigen verschillende constructies en gedrag van de foutopsporingsprogramma-omgeving. De objecten kunnen worden doorgegeven aan (of verkregen in) JavaScript-extensies om de status van het foutopsporingsprogramma te manipuleren.

Zie Systeemeigen foutopsporingsprogrammaobjecten in JavaScript-extensies voor informatie over JavaScript-extensies voor foutopsporingsprogramma's.

Zie JavaScript Debugger Scripting voor algemene informatie over het werken met JavaScript.

Typeobjecten

Een typeobject kan op verschillende manieren worden verkregen:

  • Vanuit een object: Als een script een systeemeigen object heeft in JavaScript, kan de eigenschap targetType op dat object worden geopend om een typeobject op te halen dat het statische type van het systeemeigen object vertegenwoordigt.
  • Vanaf de host: de host.getModuleType-API kan worden aangeroepen om het typeobject te retourneren voor elk type dat in een bepaalde module is gedefinieerd.

Zodra het typeobject is verkregen, heeft het de volgende eigenschappen:

Naam handtekening Beschrijving
naamVastgoedRetourneert de naam van het type.
grootteVastgoedRetourneert de grootte van het type als een 64-bits waarde.
typeKindVastgoedGeeft de soort van het type als tekenreeks terug. Dit kan een van de volgende waarden zijn: "udt", "pointer", "memberPointer", "array", "function", "typedef", "enum" of "intrinsiek".
baseTypeVastgoedRetourneert een typeobject voor het type waarop dit type is gebaseerd. Dit vertegenwoordigt geen C++-overname. Voor een aanwijzer type is dit het type waarnaar het verwijst. Voor een matrixtype is dit het type in de matrix.
VeldenVastgoedRetourneert een object met alle benoemde velden van het type, toegankelijk als eigenschappen. De waarde van elke eigenschap is een veldobject zoals hieronder wordt beschreven.
basisKlassenVastgoedRetourneert een matrix van alle directe basisklassen van het type. Elk object in de matrix is een basisklasseobject , zoals hieronder wordt beschreven.
functionReturnTypeVastgoedVoor functietypen retourneert dit een typeobject dat het retourtype van de functie vertegenwoordigt.
functionParameterTypesVastgoedVoor functietypen retourneert dit een matrix van typeobjecten die de parametertypen van de functie vertegenwoordigen.
functionCallingConventionVastgoedVoor functietypen retourneert dit de aanroepende conventie van de functie als een tekenreeks. Dit kan een van de volgende waarden zijn: 'onbekend', '__cdecl', 'fastcall', 'stdcall' of 'thiscall'.
pointerKindVastgoedVoor aanwijzertypen retourneert dit het type aanwijzer als een tekenreeks. Dit kan een van de volgende waarden zijn: 'standard', 'reference', 'rValueReference' of 'cxHat'.
lidtypeVastgoedVoor aanwijzertypen die lidpointers zijn, retourneert dit een typeobject dat de lidklasse vertegenwoordigt.
isGenericVastgoedGeeft als resultaat of het type algemeen is of niet. Dit keert terug waar voor sjabloontypen.
generiekeArgumentenVastgoedVoor typen die algemeen zijn, retourneert dit een matrix met algemene argumenten. Dergelijke argumenten kunnen typeargumenten zijn of constante waarden zijn.
isBitFieldVastgoedRetourneert of de opslag voor het type een bitveld is of niet.
bitFieldPositionsVastgoedVoor typen die bitfieldopslag vertegenwoordigen, retourneert dit een beschrijvingstype voor bitvelden dat de posities van het bitveld aangeeft.

Al deze vermeldingen zijn aanwezig tijdens de initialisatie van fase 2.

Veldobjecten

Elk veld binnen een type wordt als volgt beschreven door een veldobject met eigenschappen:

Naam handtekening Beschrijving
naamVastgoedRetourneert de naam van het veld.
soortVastgoedRetourneert een typeobject dat het statische type van het veld vertegenwoordigt.
locationKindVastgoedRetourneert het locatietype (opslag) voor het veld als een tekenreeks. Dit kan een van de volgende waarden zijn: 'member', 'static', 'constant' of 'none'.
offsetVastgoedVoor velden met een locatietype dat een offset aangeeft (bijvoorbeeld : 'lid'), retourneert dit de verschuiving van het veld binnen het bijbehorende type als een 64-bits waarde.
locatieVastgoedVoor velden met een locatietype dat een locatie aangeeft (bijvoorbeeld : 'statisch'),retourneert dit de locatie van het veld als een locatieobject.
waardeVastgoedVoor velden met een locatietype dat een waarde aangeeft (bijvoorbeeld : 'constant'), geeft dit de waarde van het veld als resultaat.

Al deze vermeldingen zijn aanwezig tijdens de initialisatie van fase 2.

Basisklasseobjecten

Elke basisklasse binnen een type wordt als volgt beschreven door een basisklasseobject met eigenschappen:

Naam handtekening Beschrijving
naamVastgoedRetourneert de naam van de basisklasse.
offsetVastgoedRetourneert de offset van deze basisklasse binnen het bijbehorende type.
soortVastgoedRetourneert een typeobject dat het statische type van de basisklasse vertegenwoordigt.

Al deze vermeldingen zijn aanwezig tijdens de initialisatie van fase 2.

Codevoorbeeld

Zie het ImageInfo.js script voor een codevoorbeeld. Zie Voorbeeldscripts voor JavaScript-foutopsporingsprogramma's voor meer informatie over codevoorbeelden.

// 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);

Zie ook

Systeemeigen Debugger-objecten in JavaScript-extensies

Systeemeigen foutopsporingsprogrammaobjecten in JavaScript-extensies - Ontwerp- en testoverwegingen

Scripting voor JavaScript-foutopsporingsprogramma's

Voorbeeldscripts voor javaScript-foutopsporingsprogramma's