Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Il motore del debugger può essere usato per esaminare e modificare i registri della 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.
Il set di registri
Il metodo GetNumberRegisters può essere usato per trovare il numero di registri nella destinazione.
Ogni registro viene indicato dal relativo 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. Sono inclusi il nome del registro, il tipo di valori che può contenere e se si tratta di una sottoregister.
Una sottoregistro è un registro contenuto in un altro registro. Quando viene modificato il sottoregistro, viene modificato anche il registro che esso contiene. Ad esempio, in un processore x86, il sottoregistro ax è lo stesso dei 16 bit inferiori 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.
È possibile trovare la posizione dell'istruzione corrente con GetInstructionOffset e GetInstructionOffset2.
La posizione dello slot dello stack di processori corrente è disponibile con GetStackOffset e GetStackOffset2.
La posizione dello stack frame per la funzione corrente può essere trovata con GetFrameOffset e GetFrameOffset2.
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 fornito ha un tipo diverso al tipo del registro, il valore viene convertito nel tipo del registro. Questa conversione equivale a quella eseguita dal metodo CoerceValue. Questa conversione può comportare la perdita di dati se il tipo del registro non è in grado di contenere il valore fornito.
Pseudo-Registers
I pseudoregistri sono variabili gestite dal motore di debugger che contengono determinati valori, ad esempio $teb è il nome dello pseudoregistro il cui valore è l'indirizzo del blocco di ambiente thread del thread corrente. Per altre informazioni e un elenco degli pseudoregistri, vedere Pseudo-Register Sintassi.
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 uno pseudoregistrato in base al nome, usare GetPseudoIndexByName. I valori degli pseudoregistri possono essere letti usando GetPseudoValues e i valori possono essere scritti in pseudoregistri usando SetPseudoValues. Per una descrizione di uno pseudoregistro, incluso il relativo tipo, usare GetPseudoDescription.
Nota Non tutti i pseudoregistri sono disponibili in tutte le sessioni di debug o in qualsiasi momento in una determinata sessione.
Visualizzazione di registri
I metodi OutputRegisters e OutputRegisters2 formattano i registri della destinazione e li inviano ai client come output.
Avvenimenti
Ogni volta che i valori dei registri di destinazione cambiano, il motore chiamerà il metodo di callback IDebugEventCallbacks::ChangeDebuggeeState con il parametro Flags impostato su DEBUG_CDS_REGISTERS.