Freigeben über


Native Debuggerobjekte in JavaScript-Erweiterungen – Typobjekte

Native Debuggerobjekte stellen verschiedene Konstrukte der Debuggerumgebung dar. JavaScript-Erweiterungen haben direkten Zugriff auf das Typsystem der zugrunde liegenden Sprache. Dieser Zugriff wird durch das Konzept von Typobjekten ausgedrückt. In diesem Thema werden die Eigenschaften beschrieben, die Typobjekten zugeordnet sind.

Native Debuggerobjekte stellen verschiedene Konstrukte und Verhaltensweisen der Debuggerumgebung dar. Die Objekte können an JavaScript-Erweiterungen übergeben (oder in abgerufen werden), um den Zustand des Debuggers zu bearbeiten.

Informationen zu JavaScript-Erweiterungen des Debuggerobjekts finden Sie unter Native Debuggerobjekte in JavaScript-Erweiterungen.

Allgemeine Informationen zum Arbeiten mit JavaScript finden Sie unter JavaScript-Debuggerskripterstellung.

Typobjekte

Ein Typobjekt kann auf verschiedene Arten abgerufen werden:

  • Aus einem Objekt: Wenn ein Skript über ein natives Objekt in JavaScript verfügt, kann auf die targetType-Eigenschaft für dieses Objekt zugegriffen werden, um ein Typobjekt abzurufen, das den statischen Typ des nativen Objekts darstellt.
  • Aus dem Host: Die host.getModuleType-API kann aufgerufen werden, um das Typobjekt für einen beliebigen Typ zurückzugeben, der in einem bestimmten Modul definiert ist.

Nachdem das Typobjekt abgerufen wurde, verfügt es über die folgenden Eigenschaften:

NameSignatureBeschreibung
nameEigenschaftGibt den Namen des Typs zurück.
sizeEigenschaftGibt die Größe des Typs als 64-Bit-Wert zurück.
TypekindEigenschaftGibt die Art des Typs als Zeichenfolge zurück. Dies kann einer der folgenden Werte sein: "udt", "zeiger", "memberPointer", "array", "function", "typedef", "enum" oder "intrinsic".
baseTypeEigenschaftGibt ein Typobjekt für den Typ zurück, auf dem dieser Typ basiert. Dies stellt keine C++-Vererbung dar. Bei einem Zeigertyp ist dies der Typ der Sache, auf die verwiesen wird. Bei einem Arraytyp ist dies der Typ, der im Array enthalten ist.
fieldsEigenschaftGibt ein -Objekt zurück, das über alle benannten Felder des Typs verfügt, auf die als benannte Eigenschaften zugegriffen werden kann. Der Wert jeder Eigenschaft ist ein Feldobjekt , wie unten beschrieben.
baseClassesEigenschaftGibt ein Array aller unmittelbaren Basisklassen des Typs zurück. Jedes Objekt im Array ist wie unten beschrieben ein Basisklassenobjekt .
functionReturnTypeEigenschaftFür Funktionstypen wird ein Typobjekt zurückgegeben, das den Rückgabetyp der Funktion darstellt.
functionParameterTypesEigenschaftFür Funktionstypen gibt dies ein Array von Typobjekten zurück, die die Parametertypen der Funktion darstellen.
functionCallingConventionEigenschaftBei Funktionstypen gibt die Aufrufkonvention der Funktion als Zeichenfolge zurück. Dies kann einer der folgenden Werte sein: "unknown", "__cdecl", "fastcall", "stdcall" oder "thiscall".
pointerKindEigenschaftBei Zeigertypen gibt die Art des Zeigers als Zeichenfolge zurück. Dies kann einer der folgenden Werte sein: "standard", "reference", "rValueReference" oder "cxHat".
memberTypeEigenschaftBei Zeigertypen, die Memberzeiger sind, wird ein Typobjekt zurückgegeben, das die Memberklasse darstellt.
isGenericEigenschaftGibt zurück, ob der Typ generisch ist oder nicht. Dies gibt true für Vorlagentypen zurück.
genericArgumentsEigenschaftFür typen, die generisch sind, wird ein Array generischer Argumente zurückgegeben. Solche Argumente können Typargumente oder konstante Werte sein.
isBitFieldEigenschaftGibt zurück, ob der Speicher für den Typ ein Bitfeld ist oder nicht.
bitFieldPositionsEigenschaftFür Typen, die den Bitfeldspeicher darstellen, wird ein Bitfeldbeschreibungstyp zurückgegeben, der die Positionen des Bitfelds angibt.

Alle diese Einträge sind während der Initialisierung in Phase 2 vorhanden.

Field-Objekte

Jedes Feld innerhalb eines Typs wird durch ein Feldobjekt mit folgenden Eigenschaften beschrieben:

NameSignatureBeschreibung
nameEigenschaftGibt den Namen des Felds zurück.
typeEigenschaftGibt ein Typobjekt zurück, das den statischen Typ des Felds darstellt.
locationKindEigenschaftGibt die Standortart (Speicher) für das Feld als Zeichenfolge zurück. Dies kann einer der folgenden Werte sein: "member", "static", "constant" oder "none".
offsetEigenschaftBei Feldern mit einer Positionsart, die einen Offset angibt (z. B. "Member"), gibt dies den Offset des Felds innerhalb des enthaltenden Typs als 64-Bit-Wert zurück.
locationEigenschaftBei Feldern, die über eine Positionsart verfügen, die eine Position angibt (z. B. "statisch"), gibt dies die Position des Felds als Positionsobjekt zurück.
valueEigenschaftFür Felder, die eine Positionsart aufweisen, die einen Wert angibt (z. B. "konstant"), gibt dies den Wert des Felds zurück.

Alle diese Einträge sind während der Initialisierung in Phase 2 vorhanden.

Basisklassenobjekte

Jede Basisklasse innerhalb eines Typs wird durch ein Basisklassenobjekt mit folgenden Eigenschaften beschrieben:

NameSignatureBeschreibung
nameEigenschaftGibt den Namen der Basisklasse zurück.
offsetEigenschaftGibt den Offset dieser Basisklasse innerhalb des enthaltenden Typs zurück.
typeEigenschaftGibt ein Typobjekt zurück, das den statischen Typ der Basisklasse darstellt.

Alle diese Einträge sind während der Initialisierung in Phase 2 vorhanden.

Codebeispiel

Ein Codebeispiel finden Sie im ImageInfo.js-Skript. Weitere Informationen zu Codebeispielen finden Sie unter Beispielskripts für JavaScript-Debugger.

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

Siehe auch

Native Debuggerobjekte in JavaScript-Erweiterungen

Native Debuggerobjekte in JavaScript-Erweiterungen : Überlegungen zu Entwurf und Test

JavaScript-Debuggerskripterstellung

Beispielskripts für JavaScript-Debugger