Partager via


Objets natifs du débogueur dans les extensions JavaScript : Objets de type

Les objets débogueur natifs représentent différentes constructions de l’environnement du débogueur. Les extensions JavaScript ont un accès direct au système de type du langage sous-jacent. Cet accès est exprimé par le biais de la notion d’objets de type. Cette rubrique décrit les propriétés associées aux objets de type.

Les objets débogueur natifs représentent différentes constructions et comportements de l’environnement du débogueur. Les objets peuvent être transmis à des extensions JavaScript (ou acquis dans celles-ci) pour manipuler l’état du débogueur.

Pour plus d’informations sur les extensions JavaScript de l’objet Débogueur, consultez Objets de débogueur natifs dans les extensions JavaScript.

Pour obtenir des informations générales sur l’utilisation de JavaScript, consultez Débogueur de scripts JavaScript.

Types d’objets

Un objet de type peut être acquis de plusieurs façons :

  • À partir d’un objet : si un script a un objet natif dans JavaScript, la propriété targetType est accessible sur cet objet afin d’obtenir un objet de type représentant le type statique de l’objet natif.
  • À partir de l’hôte : l’API host.getModuleType peut être appelée pour renvoyer l’objet de type pour n’importe quel type défini dans un module particulier.

Une fois l’objet de type acquis, il possède les propriétés suivantes :

Nom signature Description
nomPropriétéRetourne le nom du type.
taillePropriétéRetourne la taille du type sous forme de valeur 64 bits.
typeKindPropriétéRetourne le genre du type sous forme de chaîne. Il peut s’agir de l’une des valeurs suivantes : « udt », « pointeur », « memberPointer », « array », « function », « typedef », « enum » ou « intrinsèque ».
Type de basePropriétéRetourne un objet de type pour le type sur lequel ce type est basé. Cela ne reflète pas l’héritage C++. Pour un type de pointeur, il s'agit du type de l'élément pointé. Pour un type de tableau, il s’agit du type contenu dans le tableau.
champsPropriétéRetourne un objet dont tous les champs nommés du type sont accessibles en tant que propriétés nommées. La valeur de chaque propriété est un objet de champ , comme décrit ci-dessous.
baseClassesPropriétéRetourne un tableau de toutes les classes de base immédiates du type. Chaque objet du tableau est un objet de classe de base , comme décrit ci-dessous.
functionReturnTypePropriétéPour les types de fonction, cela retourne un objet de type représentant le type de retour de la fonction.
typesDeParamètresDeFonctionPropriétéPour les types de fonction, cela retourne un tableau d’objets de type représentant les types de paramètres de la fonction.
conventionAppelFonctionPropriétéPour les types de fonctions, cela retourne la convention d’appel de la fonction sous forme de chaîne. Il peut s’agir de l’une des valeurs suivantes : « inconnu », « __cdecl », « fastcall », « stdcall » ou « thiscall ».
pointerKindPropriétéPour les types de pointeur, cela retourne le type de pointeur sous forme de chaîne. Il peut s’agir de l’une des valeurs suivantes : « standard », « reference », « rValueReference » ou « cxHat ».
memberTypePropriétéPour les types de pointeurs qui sont des pointeurs membres, cela retourne un objet de type représentant la classe membre.
isGenericPropriétéRetourne si le type est générique ou non. Cela retourne vrai pour les types de modèles.
genericArgumentsPropriétéPour les types qui sont génériques, cela retourne un tableau d’arguments génériques. Ces arguments peuvent être des arguments de type ou des valeurs constantes.
isBitFieldPropriétéIndique si le stockage du type est un champ de bits ou non.
bitFieldPositionsPropriétéPour les types qui représentent le stockage de champ de bits, cela retourne un type de description de champ de bits indiquant les positions du champ de bits.

Toutes ces entrées sont présentes pendant l’initialisation de la phase 2.

Objets de champ

Chaque champ d’un type est décrit par un objet de champ ayant des propriétés comme suit :

Nom signature Description
nomPropriétéRetourne le nom du champ.
typePropriétéRetourne un objet de type représentant le type statique du champ.
locationKindPropriétéRetourne le type d’emplacement (stockage) du champ sous forme de chaîne. Il peut s’agir de l’une des valeurs suivantes : « member », « static », « constant » ou « none ».
décalagePropriétéPour les champs qui ont un type d’emplacement qui indique un décalage (par exemple : « membre »), cela retourne le décalage du champ dans son type conteneur sous forme de valeur 64 bits.
lieuPropriétéPour les champs qui ont un type d’emplacement qui indique un emplacement (par exemple : « statique »), cela renvoie l’emplacement du champ en tant qu’objet d’emplacement.
valeurPropriétéPour les champs qui ont un type d’emplacement qui indique une valeur (par exemple : « constante »), cela retourne la valeur du champ.

Toutes ces entrées sont présentes pendant l’initialisation de la phase 2.

Objets de classe de base

Chaque classe de base au sein d’un type est décrite par un objet de classe de base ayant des propriétés comme suit :

Nom signature Description
nomPropriétéRetourne le nom de la classe de base.
décalagePropriétéRetourne le décalage de cette classe de base à l'intérieur de son type conteneur.
typePropriétéRetourne un objet de type représentant le type statique de la classe de base.

Toutes ces entrées sont présentes pendant l’initialisation de la phase 2.

Exemple de code

Pour obtenir un exemple de code, consultez le script ImageInfo.js. Pour plus d’informations sur les exemples de code, consultez Exemples de scripts du débogueur 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);

Voir aussi

objets débogueur natifs dans les extensions JavaScript

Objets débogueur natifs dans les extensions JavaScript - Considérations relatives à la conception et au test

Scriptage du débogueur JavaScript

Exemples de scripts du débogueur JavaScript