Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
KD y el modo de núcleo de WinDbg admiten la depuración de múltiples procesadores. Puede realizar este tipo de depuración sobre cualquier plataforma multiprocesador.
Los procesadores tienen un número cero a n.
Si el procesador actual es el procesador 0 (es decir, si es el procesador que actualmente provocó que el depurador esté activo), puede examinar los otros procesadores no actuales (procesadores uno a n). Sin embargo, no puede cambiar nada en los procesadores obsoletos. Solo puede ver su estado.
Selección de un procesador
Puede usar el comando .echocpunum (Mostrar número de CPU) para mostrar los números de procesador del procesador actual. La salida de este comando le permite identificar de inmediato si está trabajando en un sistema de varios procesadores mediante el mensaje de depuración del kernel.
En el siguiente ejemplo, 0: delante del prompt de kd> indica que está depurando el primer procesador del ordenador.
0: kd>
Use el comando ~s (Cambiar procesador actual) para cambiar entre procesadores, como se muestra en el ejemplo siguiente.
0: kd> ~1s
1: kd>
Ahora estás depurando el segundo procesador de la computadora.
Podría ser necesario cambiar los procesadores en un sistema con varios procesadores, si encuentra un error y no puede entender la traza de pila. Es posible que la interrupción se haya producido en un procesador diferente.
Especificar procesadores en otros comandos
Puede agregar un número de procesador antes de varios comandos. Este número no va precedido de una tilde (~), excepto en el comando ~S .
Nota En la depuración en modo de usuario, la tilde se usa para especificar subprocesos. Para obtener más información sobre esta sintaxis, vea Sintaxis de subprocesos.
Los identificadores de procesador no tienen que mencionarse explícitamente. En su lugar, puede usar una expresión numérica que se resuelva en un entero que corresponda a un identificador de procesador. Para indicar que la expresión debe interpretarse como procesador, use la sintaxis siguiente.
||[Expression]
En esta sintaxis, se requieren los corchetes y Expression significa cualquier expresión numérica que se resuelva en un entero que corresponda a un identificador de procesador.
En el ejemplo siguiente, el procesador cambia en función del valor de un pseudo-register definido por el usuario.
||[@$t0]
Ejemplos de
En el ejemplo siguiente se usa el comando k (Display Stack Backtrace) para mostrar un seguimiento de pila del procesador dos.
1: kd> 2k
En el ejemplo siguiente se usa el comando r (Registers) para mostrar el registro eax del procesador tres.
1: kd> 3r eax
Sin embargo, el siguiente comando produce un error de sintaxis, ya que no se puede cambiar el estado de un procesador distinto del procesador actual.
1: kd> 3r eax=808080
Puntos de interrupción
Durante la depuración del kernel, los comandos bp, bu, bm (Establecer punto de interrupción) y ba (Interrumpir en acceso) se aplican a todos los procesadores de un equipo de varios procesadores.
Por ejemplo, si el procesador actual es tres, puede escribir el siguiente comando para colocar un punto de interrupción en SomeAddress.
1: kd> bp SomeAddress
A continuación, cualquier procesador (no solo procesador uno) que se ejecute en esa dirección provoca una captura de punto de interrupción.
Mostrar información del procesador
Puede usar la extensión !running para mostrar el estado de cada procesador en el equipo de destino. Para cada procesador, !running también puede mostrar los campos de subproceso actuales y siguientes del bloque de control de proceso (PRCB), el estado de los 16 spinlocks en cola integrados y un seguimiento de pila.
Puede usar las extensiones !cpuinfo y !cpuid para mostrar información sobre los propios procesadores.