Oggetti debugger nativi nelle estensioni JavaScript - Oggetti di tipo
Gli oggetti debugger nativi rappresentano vari costrutti dell'ambiente debugger. Le estensioni JavaScript hanno accesso diretto al sistema di tipi del linguaggio sottostante. Questo accesso viene espresso tramite la nozione di oggetti di tipo. In questo argomento vengono descritte le proprietà associate agli oggetti di tipo.
Gli oggetti debugger nativi rappresentano vari costrutti e comportamenti dell'ambiente debugger. Gli oggetti possono essere passati a estensioni JavaScript (o acquisite in) per modificare lo stato del debugger.
Per informazioni sulle estensioni JavaScript dell'oggetto Debugger, vedere Oggetti debugger nativi in Estensioni JavaScript.
Per informazioni generali sull'uso di JavaScript, vedere Scripting del debugger JavaScript.
Oggetti type
Un oggetto type può essere acquisito in diversi modi:
- Da un oggetto Object: se uno script ha un oggetto nativo all'interno di JavaScript, è possibile accedere alla proprietà targetType su tale oggetto per ottenere un oggetto type che rappresenta il tipo statico dell'oggetto nativo.
- Dall'host: l'API host.getModuleType può essere chiamata per restituire l'oggetto type per qualsiasi tipo definito in un determinato modulo.
Dopo aver acquisito l'oggetto type, ha le proprietà seguenti:
Nome | Firma | Descrizione |
name | Proprietà | Restituisce il nome del tipo. |
size | Proprietà | Restituisce le dimensioni del tipo come valore a 64 bit. |
typeKind | Proprietà | Restituisce il tipo del tipo come stringa. Questo può essere uno dei valori seguenti: "udt", "puntatore", "memberPointer", "array", "function", "typedef", "enum" o "intrinseco". |
baseType | Proprietà | Restituisce un oggetto type per il tipo in cui è basato questo tipo. Questo non rappresenta l'ereditarietà C++. Per un tipo di puntatore, questo è il tipo della cosa a cui punta. Per un tipo di matrice, questo è il tipo contenuto nella matrice. |
fields | Proprietà | Restituisce un oggetto con tutti i campi denominati del tipo accessibili come proprietà denominate. Il valore di ogni proprietà è un oggetto field , come descritto di seguito. |
baseClasses | Proprietà | Restituisce una matrice di tutte le classi di base immediate del tipo. Ogni oggetto nella matrice è un oggetto classe di base , come descritto di seguito. |
Functionreturntype | Proprietà | Per i tipi di funzione, questo restituisce un oggetto type che rappresenta il tipo restituito della funzione. |
functionParameterTypes | Proprietà | Per i tipi di funzione, viene restituita una matrice di oggetti di tipo che rappresentano i tipi di parametro della funzione. |
functionCallingConvention | Proprietà | Per i tipi di funzione, viene restituita la convenzione chiamante della funzione come stringa. Questo può essere uno dei valori seguenti: "sconosciuto", "__cdecl", "fastcall", "stdcall" o "thiscall". |
pointerKind | Proprietà | Per i tipi di puntatore, questo restituisce il tipo di puntatore come stringa. Questo può essere uno dei valori seguenti: "standard", "reference", "rValueReference" o "cxHat". |
memberType | Proprietà | Per i tipi di puntatore che sono puntatori membro, viene restituito un oggetto type che rappresenta la classe membro. |
isGeneric | Proprietà | Restituisce se il tipo è generico o meno. Verrà restituito true per i tipi di modello. |
genericArguments | Proprietà | Per i tipi generici, verrà restituita una matrice di argomenti generici. Tali argomenti possono essere argomenti di tipo o possono essere valori costanti. |
isBitField | Proprietà | Restituisce se l'archiviazione per il tipo è un campo bit o meno. |
bitFieldPositions | Proprietà | Per i tipi che rappresentano l'archiviazione bitfield, verrà restituito un tipo di descrizione del campo bit che indica le posizioni del campo bit. |
Tutte queste voci sono presenti durante l'inizializzazione della fase 2.
Oggetti campo
Ogni campo all'interno di un tipo è descritto da un oggetto campo con proprietà come indicato di seguito:
Nome | Firma | Descrizione |
name | Proprietà | Restituisce il nome del campo. |
tipo | Proprietà | Restituisce un oggetto type che rappresenta il tipo statico del campo. |
locationKind | Proprietà | Restituisce il tipo di posizione (archiviazione) per il campo come stringa. Questo può essere uno dei valori seguenti: "member", "static", "constant" o "none". |
offset | Proprietà | Per i campi con un tipo di posizione che indica un offset ,ad esempio "membro", restituisce l'offset del campo all'interno del tipo contenente come valore a 64 bit. |
posizione | Proprietà | Per i campi che hanno un tipo di posizione che indica una posizione (ad esempio: "statico"), restituisce la posizione del campo come oggetto location. |
Valore | Proprietà | Per i campi con un tipo di posizione che indica un valore (ad esempio: "costante"), restituisce il valore del campo. |
Tutte queste voci sono presenti durante l'inizializzazione della fase 2.
Oggetti classe base
Ogni classe base all'interno di un tipo è descritta da un oggetto classe di base con proprietà come indicato di seguito:
Nome | Firma | Descrizione |
name | Proprietà | Restituisce il nome della classe di base. |
offset | Proprietà | Restituisce l'offset di questa classe di base all'interno del tipo contenitore. |
tipo | Proprietà | Restituisce un oggetto tipo che rappresenta il tipo statico della classe base. |
Tutte queste voci sono presenti durante l'inizializzazione della fase 2.
Esempio di codice
Per un esempio di codice, vedere lo script ImageInfo.js. Per altre informazioni sugli esempi di codice, vedere Script di esempio del debugger 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);
Vedere anche
Oggetti debugger nativi nelle estensioni JavaScript
Oggetti debugger nativi nelle estensioni JavaScript - Considerazioni sulla progettazione e sul test