Registros
El motor del depurador se puede usar para examinar y modificar los registros del destino.
Los registros disponibles en el destino dependen de su arquitectura de procesador. Para obtener una descripción de los registros del procesador x86, consulte Arquitectura del procesador. Para obtener una descripción completa de los registros disponibles para un procesador, consulte la documentación del procesador.
Conjunto de registros
El método GetNumberRegisters se puede usar para buscar el número de registros en el destino.
Su índice hace referencia a cada registro. El índice del primer registro es cero y el índice del último registro es el número de registros menos uno. Para buscar el índice de un registro cuyo nombre se conoce, use GetIndexByName.
El método GetDescription devuelve información sobre un registro. Esto incluye el nombre del registro, el tipo de valores que puede contener y si es un subregistro.
Un subséster es un registro que se encuentra dentro de otro registro. Cuando cambia la subregión, el registro que lo contiene también cambia. Por ejemplo, en un procesador x86, el subregión ax es el mismo que los 16 bits bajos del registro eax de 32 bits.
Hay tres registros especiales cuyos valores se pueden encontrar mediante los métodos siguientes. La interpretación de los valores de estos registros depende de la plataforma.
La ubicación de la instrucción actual se puede encontrar con GetInstructionOffset y GetInstructionOffset2.
La ubicación de la ranura de pila del procesador actual se puede encontrar con GetStackOffset y GetStackOffset2.
La ubicación del marco de pila de la función actual se puede encontrar con GetFrameOffset y GetFrameOffset2.
Manipular registros
El valor de un registro se puede leer mediante el método GetValue. Se pueden leer varios registros mediante GetValues y GetValues2.
Un valor se puede escribir en un registro mediante el método SetValue. Se pueden escribir varios registros mediante SetValues y SetValues2.
Al escribir un valor en un registro, si el valor proporcionado tiene un tipo diferente al tipo del registro, el valor se convierte en el tipo del registro. Esta conversión es la misma que la realizada por el método CoerceValue. Esta conversión puede provocar una pérdida de datos si el tipo del registro no es capaz de contener el valor proporcionado.
Pseudo-Registers
Los pseudo-registros son variables mantenidas por el motor del depurador que contienen determinados valores, por ejemplo, $teb es el nombre del pseudo-register cuyo valor es la dirección del bloque de entorno de subprocesos (TEB) del subproceso actual. Para obtener más información y una lista de los pseudo-registers, vea Pseudo-Register Syntax.
Cada pseudo-registro tiene un índice. El índice es un número entre cero y el número de pseudoregistros: (devuelto por GetNumberPseudoRegisters) menos uno. Para buscar el índice de un pseudo-register por su nombre, use GetPseudoIndexByName. Los valores de pseudo-registers se pueden leer mediante GetPseudoValues y los valores se pueden escribir en pseudo-registers mediante SetPseudoValues. Para obtener una descripción de un pseudo-register, incluido su tipo, use GetPseudoDescription.
Nota No todos los pseudo-registros están disponibles en todas las sesiones de depuración o en todo momento en una sesión determinada.
Mostrar registros
Los métodos OutputRegisters y OutputRegisters2 da formato a los registros del destino y los envía a los clientes como salida.
Eventos
Cada vez que cambien los valores de los registros del destino, el motor llamará al método de devolución de llamada IDebugEventCallbacks::ChangeDebuggeeState con el parámetro Flags establecido en DEBUG_CDS_REGISTERS.