Condividi tramite


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:

NomeFirmaDescrizione
nameProprietàRestituisce il nome del tipo.
sizeProprietàRestituisce le dimensioni del tipo come valore a 64 bit.
typeKindProprietàRestituisce il tipo del tipo come stringa. Questo può essere uno dei valori seguenti: "udt", "puntatore", "memberPointer", "array", "function", "typedef", "enum" o "intrinseco".
baseTypeProprietà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.
fieldsProprietà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.
baseClassesProprietà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.
FunctionreturntypeProprietàPer i tipi di funzione, questo restituisce un oggetto type che rappresenta il tipo restituito della funzione.
functionParameterTypesProprietàPer i tipi di funzione, viene restituita una matrice di oggetti di tipo che rappresentano i tipi di parametro della funzione.
functionCallingConventionProprietà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".
pointerKindProprietà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".
memberTypeProprietàPer i tipi di puntatore che sono puntatori membro, viene restituito un oggetto type che rappresenta la classe membro.
isGenericProprietàRestituisce se il tipo è generico o meno. Verrà restituito true per i tipi di modello.
genericArgumentsProprietàPer i tipi generici, verrà restituita una matrice di argomenti generici. Tali argomenti possono essere argomenti di tipo o possono essere valori costanti.
isBitFieldProprietàRestituisce se l'archiviazione per il tipo è un campo bit o meno.
bitFieldPositionsProprietà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:

NomeFirmaDescrizione
nameProprietàRestituisce il nome del campo.
tipoProprietàRestituisce un oggetto type che rappresenta il tipo statico del campo.
locationKindProprietàRestituisce il tipo di posizione (archiviazione) per il campo come stringa. Questo può essere uno dei valori seguenti: "member", "static", "constant" o "none".
offsetProprietà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.
posizioneProprietàPer i campi che hanno un tipo di posizione che indica una posizione (ad esempio: "statico"), restituisce la posizione del campo come oggetto location.
ValoreProprietà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:

NomeFirmaDescrizione
nameProprietàRestituisce il nome della classe di base.
offsetProprietàRestituisce l'offset di questa classe di base all'interno del tipo contenitore.
tipoProprietà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

JavaScript Debugger Scripting

Script di esempio del debugger JavaScript