Partager via


Objets débogueur natifs 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 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érents constructions et comportements de l’environnement du débogueur. Les objets peuvent être passés dans (ou acquis dans) des extensions JavaScript pour manipuler l’état du débogueur.

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

Pour obtenir des informations générales sur l’utilisation de JavaScript, consultez Script du débogueur JavaScript.

Objets de type

Un objet 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 type représentant le type statique de l’objet natif.
  • À partir de l’hôte : l’API host.getModuleType peut être appelée afin de retourner l’objet de type pour n’importe quel type défini dans un module particulier.

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

NomSignatureDescription
namePropriétéRetourne le nom du type.
sizePropriétéRetourne la taille du type sous la forme d’une valeur 64 bits.
typeKindPropriétéRetourne le type 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 ».
baseTypePropriétéRetourne un objet de type pour le type sur lequel ce type est basé. Cela ne représente pas l’héritage C++. Pour un type de pointeur, il s’agit du type de la chose vers laquelle pointe. Pour un type de tableau, il s’agit du type contenu dans le tableau.
fieldsPropriétéRetourne un objet qui a tous les champs nommés du type accessibles en tant que propriétés nommées. La valeur de chaque propriété est un objet field , 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 fonctions, cela renvoie un objet de type représentant le type de retour de la fonction.
functionParameterTypesPropriétéPour les types de fonctions, cette opération retourne un tableau d’objets de type représentant les types de paramètres de la fonction.
functionCallingConventionPropriétéPour les types de fonctions, cette opération retourne la convention d’appel de la fonction sous forme de chaîne. Il peut s’agir de l’une des valeurs suivantes : « unknown », « __cdecl », « fastcall », « stdcall » ou « thiscall ».
pointerKindPropriétéPour les types de pointeurs, le type de pointeur est retourné 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. Cette opération retourne true pour les types de modèles.
genericArgumentsPropriétéPour les types génériques, un tableau d’arguments génériques est retourné. Ces arguments peuvent être des arguments de type ou des valeurs constantes.
isBitFieldPropriétéRetourne si le stockage du type est un champ de bits ou non.
bitFieldPositionsPropriétéPour les types qui représentent le stockage de champs de bits, un type de description de champ de bits indique les positions du champ de bits.

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

Field Objects

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

NomSignatureDescription
namePropriétéRetourne le nom du champ.
typePropriétéRetourne un objet 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 ».
offsetPropriétéPour les champs dont le type d’emplacement indique un décalage (par exemple, « membre »), retourne le décalage du champ dans son type de conteneur sous forme de valeur 64 bits.
locationPropriétéPour les champs dont le type d’emplacement indique un emplacement (par exemple, « statique »), cette opération retourne l’emplacement du champ en tant qu’objet location.
valuePropriétéPour les champs dont le type d’emplacement indique une valeur (par exemple, « constante »), cette opération retourne la valeur du champ.

Toutes ces entrées sont présentes lors de 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 :

NomSignatureDescription
namePropriétéRetourne le nom de la classe de base.
offsetPropriétéRetourne le décalage de cette classe de base dans son type contenant.
typePropriétéRenvoie un objet de type représentant le type statique de la classe de base.

Toutes ces entrées sont présentes lors de 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 de débogueur natifs dans les extensions JavaScript - Considérations relatives à la conception et aux tests

Script du débogueur JavaScript

Exemples de scripts de débogueur JavaScript