Share via


Registros

O mecanismo de depurador pode ser usado para examinar e alterar os registros do destino.

Os registros 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 registros disponíveis para um processador, consulte a documentação desse processador.

O Conjunto de Registros

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

Cada registro é referenciado por seu índice. O índice do primeiro registro é zero e o índice do último registro é o número de registros 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 subregistro é um registro contido em outro registro. Quando o subregistro é alterado, o registro que o contém também é alterado. Por exemplo, em um processador x86, o subregistro ax é o mesmo que os 16 bits baixos do registro eax de 32 bits.

Há três registros especiais cujos valores podem ser encontrados usando os métodos a seguir. A interpretação dos valores desses registros depende da plataforma.

Manipulando registros

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 gravar um valor em um registro, se o valor fornecido tiver um tipo diferente para o tipo do registro, o valor será convertido no tipo do registro. Essa conversão é a mesma executada pelo método CoerceValue. Essa conversão poderá resultar em perda de dados se o tipo do registro não for capaz de manter o valor fornecido.

Pseudo-Registers

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

Cada pseudo-registro tem um índice. O índice é um número entre zero e o número de pseudo-registros – (retornado por GetNumberPseudoRegisters) menos um. Para localizar o índice de um pseudo-registro pelo 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.

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

Exibindo registros

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

Eventos

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