Udostępnij za pomocą


Obiekty Debuggera Rodzimego w Rozszerzeniach JavaScript - Obiekty Typów

Natywne obiekty debugera reprezentują różne konstrukcje środowiska debugera. Rozszerzenia języka JavaScript mają bezpośredni dostęp do systemu typów języka bazowego. Ten dostęp jest wyrażany za pośrednictwem pojęcia obiektów typu. W tym temacie opisano właściwości skojarzone z obiektami typu.

Natywne obiekty debugera reprezentują różne konstrukcje i zachowania środowiska debugera. Obiekty można przekazać do rozszerzeń języka JavaScript (lub uzyskanych w nich), aby zarządzać stanem debugera.

Aby uzyskać informacje o rozszerzeniach JavaScript obiektu debugera, zobacz Native Debugger Objects in JavaScript Extensions (Natywne obiekty debugera w rozszerzeniach języka JavaScript).

Aby uzyskać ogólne informacje na temat pracy z językiem JavaScript, zobacz JavaScript Debugger Scripting (Skrypty debugera języka JavaScript).

Typ obiektów

Obiekt typu można uzyskać na wiele sposobów:

  • Z obiektu: jeśli skrypt ma obiekt macierzysty w języku JavaScript, można uzyskać dostęp do właściwości targetType dla tego obiektu w celu uzyskania obiektu typu reprezentującego statyczny typ obiektu natywnego.
  • Od hosta: interfejsu API host.getModuleType można użyć, aby zwrócić obiekt typu dowolnego zdefiniowanego typu w określonym module.

Po uzyskaniu obiektu typu ma następujące właściwości:

Nazwa Podpis Opis
nazwaMajątekZwraca nazwę typu.
rozmiarMajątekZwraca rozmiar typu jako wartość 64-bitową.
typeKindMajątekZwraca rodzaj typu jako ciąg. Może to być jedna z następujących wartości: "udt", "pointer", "memberPointer", "array", "function", "typedef", "enum" lub "intrinsic".
baseTypeMajątekZwraca obiekt typu dla typu, na którym jest oparty ten typ. Nie reprezentuje to dziedziczenia języka C++. W przypadku typu wskaźnika jest to typ wskazywanej rzeczy. W przypadku typu tablicy jest to typ zawarty w tablicy.
PolaMajątekZwraca obiekt, który ma wszystkie nazwane pola typu dostępnego jako nazwane właściwości. Wartość każdej właściwości jest obiektem pola zgodnie z poniższym opisem.
klasy bazoweMajątekZwraca tablicę wszystkich bezpośrednich klas bazowych typu. Każdy obiekt w tablicy jest obiektem klasy bazowej , jak opisano poniżej.
typ zwracany funkcjiMajątekW przypadku typów funkcji zwraca obiekt typu reprezentujący zwracany typ funkcji.
typyParametrówFunkcjiMajątekW przypadku typów funkcji zwraca tablicę obiektów typu reprezentujących typy parametrów funkcji.
konwencja wywoływania funkcjiMajątekW przypadku typów funkcji zwraca ona konwencję wywoływania funkcji jako ciąg. Może to być jedna z następujących wartości: "unknown", "__cdecl", "fastcall", "stdcall" lub "thiscall".
wskaźnikRodzajMajątekW przypadku typów wskaźników zwraca to rodzaj wskaźnika jako ciąg. Może to być jedna z następujących wartości: "standard", "reference", "rValueReference" lub "cxHat".
memberType (typ członka)MajątekW przypadku typów wskaźników będących wskaźnikami składowych zwraca obiekt typu reprezentujący klasę składową.
isGenericMajątekZwraca, czy typ jest ogólny, czy nie. Spowoduje to zwrócenie wartości true dla typów szablonów.
argumenty generyczneMajątekW przypadku typów ogólnych zostanie zwrócona tablica argumentów ogólnych. Takie argumenty mogą być argumentami typu lub mogą być wartościami stałymi.
isBitFieldMajątekZwraca, czy pamięć dla typu jest polem bitowym, czy nie.
bitFieldPositionsMajątekW przypadku typów reprezentujących magazyn pola bitowego zostanie zwrócony typ opisu pola bitowego wskazujący pozycje pola bitowego.

Wszystkie te wpisy są obecne podczas inicjalizacji fazy 2.

Obiekty pól

Każde pole w typie jest opisane przez obiekt pola o właściwościach w następujący sposób:

Nazwa Podpis Opis
nazwaMajątekZwraca nazwę pola.
typMajątekZwraca obiekt typu reprezentujący statyczny typ pola.
locationKindMajątekZwraca rodzaj lokalizacji (przechowywania) dla pola jako ciąg znaków. Może to być jedna z następujących wartości: "member", "static", "constant" lub "none".
przesunąćMajątekW przypadku pól, które mają rodzaj lokalizacji, który wskazuje przesunięcie (np. "element członkowski"), zwraca przesunięcie pola w obrębie typu zawierającego jako wartość 64-bitową.
lokalizacjaMajątekW przypadku pól, które mają rodzaj lokalizacji, który wskazuje lokalizację (np. "statyczną"), zwraca lokalizację pola jako obiekt lokalizacji.
wartośćMajątekW przypadku pól, które mają rodzaj lokalizacji, który wskazuje wartość (np. "stała"), zwraca wartość pola.

Wszystkie te wpisy występują podczas inicjowania fazy 2.

Obiekty klasy bazowej

Każda klasa bazowa w ramach typu jest opisana przez obiekt klasy bazowej o właściwościach w następujący sposób:

Nazwa Podpis Opis
nazwaMajątekZwraca nazwę klasy bazowej.
przesunąćMajątekZwraca przesunięcie tej klasy bazowej w typie, który ją zawiera.
typMajątekZwraca obiekt typu reprezentujący statyczny typ klasy bazowej.

Wszystkie te wpisy występują podczas inicjalizacji fazy 2.

Przykład kodu

Aby zapoznać się z przykładem kodu, zobacz skrypt ImageInfo.js. Aby uzyskać więcej informacji na temat przykładów kodu, zobacz Przykładowe skrypty debugera Języka 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);

Zobacz również

natywnych obiektów debugera w rozszerzeniach Języka JavaScript

Natywne obiekty debugera w rozszerzeniach języka JavaScript — zagadnienia dotyczące projektowania i testowania

Skrypty debugowania JavaScript

Przykładowe skrypty debugera JavaScript