Partilhar via


Registos

O mecanismo do depurador pode ser usado para examinar e alterar os registos do sistema.

Os registradores disponíveis no destino dependem de sua arquitetura de processador. Para obter uma descrição dos registros para o processador x86, consulte Arquitetura do processador. Para obter uma descrição completa dos registos disponíveis para um processador, consulte a documentação desse processador.

O conjunto de registos

O método GetNumberRegisters pode ser usado para localizar o número de registros no destino.

Cada registo é referido pelo seu índice. O índice do primeiro registo é zero e o índice do último registo é o número de registos menos um. Para localizar o índice de um registro cujo nome é conhecido, use GetIndexByName.

O método GetDescription retorna informações sobre um registro. Isso inclui o nome do registro, o tipo de valores que ele pode conter e se é um subregistro.

Um subregisto é um registo que está contido noutro registo. Quando o sub-registo é alterado, o registo que o contém também muda. Por exemplo, em um processador x86, o subregistro ax é o mesmo que os 16 bits baixos do registro eax de 32 bits.

Existem três registos especiais cujos valores podem ser encontrados utilizando os seguintes métodos. A interpretação dos valores destes registos depende da plataforma.

Manipulação de registos

O valor de um registro pode ser lido usando o método GetValue. Vários registros podem ser lidos usando GetValues e GetValues2.

Um valor pode ser gravado em um registro usando o método SetValue. Vários registros podem ser gravados usando SetValues e SetValues2.

Ao escrever um valor num registo, se o valor fornecido tiver um tipo diferente do tipo do registo, então o valor é convertido no tipo do registo. Esta conversão é a mesma realizada pelo método CoerceValue. Esta conversão pode resultar na perda de dados se o tipo de registo não for capaz de reter o valor fornecido.

Pseudo-Registers

Pseudo-registros são variáveis mantidas pelo mecanismo de depurador que contêm certos valores, por exemplo, $teb é o nome do pseudo-registro cujo valor é o endereço do Thread Environment Block (TEB) do thread atual. Para obter mais informações e uma lista dos pseudo-registros, consulte Pseudo-Register Sintaxe.

Cada pseudo-registo tem um índice. O índice é um número entre zero e o número de pseudo-registos (retornado por GetNumberPseudoRegisters) menos um. Para localizar o índice de um pseudo-registro por seu nome, use GetPseudoIndexByName. Os valores de pseudo-registros podem ser lidos usando GetPseudoValues, e os valores podem ser gravados em pseudo-registros usando SetPseudoValues. Para obter uma descrição de um pseudo-registro, incluindo seu tipo, use GetPseudoDescription.

Observação Nem todos os pseudo-registos estão disponíveis em todas as sessões de depuração ou em todos os momentos numa sessão específica.

Exibição de registros

Os métodos OutputRegisters e OutputRegisters2 formatam os registradores do destino e os enviam para os clientes como saída.

Eventos

Sempre que os valores dos registros do destino mudarem, o mecanismo chamará o método de retorno de chamada IDebugEventCallbacks::ChangeDebuggeeState com o parâmetro Flags definido como DEBUG_CDS_REGISTERS.