Registri

Il motore del debugger può essere usato per esaminare e modificare i registri di destinazione.

I registri disponibili nella destinazione dipendono dall'architettura del processore. Per una descrizione dei registri per il processore x86, vedere Architettura del processore. Per una descrizione completa dei registri disponibili per un processore, vedere la documentazione del processore.

Set di registrazione

Il metodo GetNumberRegisters può essere usato per trovare il numero di registri nella destinazione.

Ogni registro viene definito dall'indice. L'indice del primo registro è zero e l'indice dell'ultimo registro è il numero di registri meno uno. Per trovare l'indice di un registro il cui nome è noto, usare GetIndexByName.

Il metodo GetDescription restituisce informazioni su un registro. Ciò include il nome del registro, il tipo di valori che può contenere e se si tratta di una sottoregister.

Una sottoregister è un registro contenuto all'interno di un altro registro. Quando cambia la sottoregister, il registro che lo contiene cambia anche. Ad esempio, in un processore x86, la sottoregister ax è la stessa dei 16 bit bassi del registro eax a 32 bit.

Esistono tre registri speciali i cui valori possono essere trovati usando i metodi seguenti. L'interpretazione dei valori di questi registri dipende dalla piattaforma.

Modifica dei registri

Il valore di un registro può essere letto usando il metodo GetValue. È possibile leggere più registri usando GetValues e GetValues2.

Un valore può essere scritto in un registro usando il metodo SetValue. È possibile scrivere più registri usando SetValues e SetValues2.

Quando si scrive un valore in un registro, se il valore specificato ha un tipo diverso al tipo del registro, il valore viene convertito nel tipo del registro. Questa conversione è uguale a quella eseguita dal metodo CoerceValue. Questa conversione può causare la perdita di dati se il tipo del registro non è in grado di contenere il valore specificato.

Pseudo-Registers

I pseudoregistri sono variabili gestite dal motore del debugger che contengono determinati valori, ad esempio $teb è il nome dello pseudoregistro il cui valore è l'indirizzo del blocco dell'ambiente thread corrente (TEB). Per altre informazioni e un elenco dei pseudoregistri, vedere Sintassi di pseudoregistro.

Ogni pseudoregistro ha un indice. L'indice è un numero compreso tra zero e il numero di pseudoregistri - (restituito da GetNumberPseudoRegisters) meno uno. Per trovare l'indice di un pseudoregistro in base al nome, usare GetPseudoIndexByName. I valori di pseudoregistri possono essere letti usando GetPseudoValues e i valori possono essere scritti in pseudoregistrazioni usando SetPseudoValues. Per una descrizione di un pseudoregistro, incluso il relativo tipo, usare GetPseudoDescription.

Nota Non tutti i registri pseudo-registrati sono disponibili in tutte le sessioni di debug o in tutte le volte in una determinata sessione.

Visualizzazione dei registri

I metodi OutputRegisters e OutputRegisters2 formattano i registri della destinazione e li invia ai client come output.

Eventi

Ogni volta che i valori dei registri di destinazione cambiano, il motore chiamerà IDebugEventCallbacks::ChangeDebuggeeState callback con il parametro Flags impostato su DEBUG_CDS_REGISTERS.