Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
O local da instrução atual pode ser encontrado com GetInstructionOffset e GetInstructionOffset2.
O local do slot de pilha do processador atual pode ser encontrado com GetStackOffset e GetStackOffset2.
O endereço do quadro de execução para a função atual pode ser encontrado com GetFrameOffset e GetFrameOffset2.
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.