Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Systemeigene Debuggerobjekte stellen verschiedene Konstrukte der Debuggerumgebung dar. JavaScript-Erweiterungen haben direkten Zugriff auf das Typsystem der zugrunde liegenden Sprache. Dieser Zugriff wird durch den Begriff der Typobjekte ausgedrückt. In diesem Thema werden die Eigenschaften beschrieben, die mit Typobjekten verknüpft sind.
Systemeigene Debuggerobjekte stellen verschiedene Konstrukte und Verhaltensweisen der Debuggerumgebung dar. Die Objekte können an JavaScript-Erweiterungen übergeben (oder erworben werden), um den Zustand des Debuggers zu bearbeiten.
Informationen zu JavaScript-Erweiterungen des Debuggerobjekts finden Sie unter Native Debugger Objects in JavaScript Extensions.
Allgemeine Informationen zum Arbeiten mit JavaScript finden Sie unter JavaScript Debugger Scripting.
Typobjekte
Ein Typobjekt kann auf verschiedene Arten abgerufen werden:
- Aus einem Objekt: Wenn ein Skript über ein systemeigenes 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.
- Vom Host: Die host.getModuleType-API kann aufgerufen werden, um das Typobjekt für jeden Typ zurückzugeben, der in einem bestimmten Modul definiert ist.
Nachdem das Typobjekt abgerufen wurde, verfügt es über die folgenden Eigenschaften:
| Name | Signatur- | Beschreibung |
| Name | Eigentum | Gibt den Namen des Typs zurück. |
| Größe | Eigentum | Gibt die Größe des Typs als 64-Bit-Wert zurück. |
| typeKind | Eigentum | Gibt die Art des Typs als Zeichenfolge zurück. Dies kann einer der folgenden Werte sein: "udt", "pointer", "memberPointer", "array", "function", "typedef", "enum" oder "systemintern". |
| Basis-Typ | Eigentum | Gibt 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 des Punkts, auf den verwiesen wird. Bei einem Arraytyp ist dies der Typ, der im Array enthalten ist. |
| Felder | Eigentum | Gibt ein Objekt zurück, das alle benannten Felder des Typs enthält, auf die als benannte Eigenschaften zugegriffen werden kann. Der Wert jeder Eigenschaft ist ein Feldobjekt , wie unten beschrieben. |
| baseClasses | Eigentum | Gibt ein Array aller unmittelbaren Basisklassen des Typs zurück. Jedes Objekt im Array ist ein Basisklassenobjekt , wie unten beschrieben. |
| functionReturnType | Eigentum | Bei Funktionstypen gibt dies ein Typobjekt zurück, das den Rückgabetyp der Funktion darstellt. |
| FunktionParameterTypen | Eigentum | Bei Funktionstypen gibt dies ein Array von Typobjekten zurück, das die Parametertypen der Funktion darstellt. |
| Funktionsaufrufkonvention | Eigentum | Bei Funktionstypen gibt dies die aufrufende Konvention der Funktion als Zeichenfolge zurück. Dies kann einer der folgenden Werte sein: "unknown", "__cdecl", "fastcall", "stdcall" oder "thiscall". |
| pointerKind | Eigentum | Bei Zeigertypen gibt dies die Art des Zeigers als Zeichenfolge zurück. Dabei kann es sich um einen der folgenden Werte handeln: "standard", "reference", "rValueReference" oder "cxHat". |
| memberType | Eigentum | Bei Zeigertypen, die Memberzeiger sind, gibt dies ein Typobjekt zurück, das die Memberklasse darstellt. |
| isGeneric | Eigentum | Gibt zurück, ob der Typ generisch ist oder nicht. Dies gibt true für Vorlagentypen zurück. |
| Generische Argumente | Eigentum | Bei Generischen Typen gibt dies ein Array von generischen Argumenten zurück. Solche Argumente können Typargumente sein oder konstante Werte sein. |
| isBitField | Eigentum | Gibt zurück, ob der Speicher für den Typ ein Bitfeld ist oder nicht. |
| Bitfeldpositionen | Eigentum | Bei Typen, die Bitfeldspeicher darstellen, gibt dies einen Bitfeldbeschreibungstyp zurück, der die Positionen des Bitfelds angibt. |
Alle diese Einträge sind während der Initialisierung der Phase 2 vorhanden.
Field-Objekte
Jedes Feld innerhalb eines Typs wird von einem Feldobjekt mit Eigenschaften wie folgt beschrieben:
| Name | Signatur- | Beschreibung |
| Name | Eigentum | Gibt den Namen des Felds zurück. |
| Typ | Eigentum | Gibt ein Typobjekt zurück, das den statischen Typ des Felds darstellt. |
| locationKind | Eigentum | Gibt den Speicherorttyp (Speicher) für das Feld als Zeichenfolge zurück. Dies kann einer der folgenden Werte sein: "member", "static", "constant" oder "none". |
| Offset | Eigentum | Bei Feldern mit einer Lageart, die einen Offset angibt (z. B. "Mitglied"), gibt dies den Offset des Feldes innerhalb des übergeordneten Typs als 64-Bit-Wert zurück. |
| Standort | Eigentum | Bei Feldern mit einer Positionsart, die eine Position angibt (z. B. "statisch"), gibt dies die Position des Felds als Ortsobjekt zurück. |
| Wert | Eigentum | Bei Feldern mit einer Positionsart, die einen Wert angibt (z. B. "Konstante"), gibt dies den Wert des Felds zurück. |
Alle diese Einträge sind während der Initialisierung der Phase 2 vorhanden.
Basisklassenobjekte
Jede Basisklasse innerhalb eines Typs wird von einem Basisklassenobjekt mit Eigenschaften wie folgt beschrieben:
| Name | Signatur- | Beschreibung |
| Name | Eigentum | Gibt den Namen der Basisklasse zurück. |
| Offset | Eigentum | Gibt den Offset dieser Basisklasse innerhalb des enthaltenden Typs zurück. |
| Typ | Eigentum | Gibt ein Typobjekt zurück, das den statischen Typ der Basisklasse darstellt. |
Alle diese Einträge sind während der Initialisierung der Phase 2 vorhanden.
Codebeispiel
Ein Codebeispiel finden Sie im ImageInfo.js Skript. Weitere Informationen zu Codebeispielen finden Sie unter JavaScript-Debuggerbeispielskripts.
// 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 Debugger-Objekte in JavaScript-Erweiterungen – Entwurfs- und Testüberlegungen