Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 |
| nom | Propriété | Retourne le nom du type. |
| taille | Propriété | Retourne la taille du type sous forme de valeur 64 bits. |
| typeKind | Proprié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 base | Proprié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. |
| champs | Proprié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. |
| baseClasses | Proprié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. |
| functionReturnType | Propriété | Pour les types de fonction, cela retourne un objet de type représentant le type de retour de la fonction. |
| typesDeParamètresDeFonction | Propriété | Pour les types de fonction, cela retourne un tableau d’objets de type représentant les types de paramètres de la fonction. |
| conventionAppelFonction | Proprié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 ». |
| pointerKind | Proprié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 ». |
| memberType | Propriété | Pour les types de pointeurs qui sont des pointeurs membres, cela retourne un objet de type représentant la classe membre. |
| isGeneric | Propriété | Retourne si le type est générique ou non. Cela retourne vrai pour les types de modèles. |
| genericArguments | Proprié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. |
| isBitField | Propriété | Indique si le stockage du type est un champ de bits ou non. |
| bitFieldPositions | Proprié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 |
| nom | Propriété | Retourne le nom du champ. |
| type | Propriété | Retourne un objet de type représentant le type statique du champ. |
| locationKind | Proprié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écalage | Proprié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. |
| lieu | Proprié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. |
| valeur | Proprié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 |
| nom | Propriété | Retourne le nom de la classe de base. |
| décalage | Propriété | Retourne le décalage de cette classe de base à l'intérieur de son type conteneur. |
| type | Proprié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