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 :
Nom | Signature | Description |
name | Propriété | Retourne le nom du type. |
size | Propriété | Retourne la taille du type sous la forme d’une valeur 64 bits. |
typeKind | Proprié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 ». |
baseType | Proprié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. |
fields | Proprié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. |
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 fonctions, cela renvoie un objet de type représentant le type de retour de la fonction. |
functionParameterTypes | Proprié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. |
functionCallingConvention | Proprié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 ». |
pointerKind | Proprié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 ». |
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. Cette opération retourne true pour les types de modèles. |
genericArguments | Proprié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. |
isBitField | Propriété | Retourne si le stockage du type est un champ de bits ou non. |
bitFieldPositions | Proprié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 :
Nom | Signature | Description |
name | Propriété | Retourne le nom du champ. |
type | Propriété | Retourne un objet 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 ». |
offset | Proprié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. |
location | Proprié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. |
value | Proprié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 :
Nom | Signature | Description |
name | Propriété | Retourne le nom de la classe de base. |
offset | Propriété | Retourne le décalage de cette classe de base dans son type contenant. |
type | Proprié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