k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace)
Los comandos k* muestran el marco de pila del subproceso especificado con información relacionada.
Modo de usuario, procesador x86
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr StackPtr InstructionPtr
[~Thread] kd [WordCount]
Modo kernel, procesador x86
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = BasePtr StackPtr InstructionPtr
[Processor] kd [WordCount]
Modo de usuario, procesador x64
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[~Thread] kd [WordCount]
Modo kernel, procesador x64
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[Processor] kd [WordCount]
Modo de usuario, procesador ARM
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[~Thread] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[~Thread] kd [WordCount]
Modo kernel, procesador ARM
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] [FrameCount]
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr FrameCount
[Processor] k[b|p|P|v] [c] [n] [f] [L] [M] = StackPtr InstructionPtr FrameCount
[Processor] kd [WordCount]
Parámetros
Subproceso
Especifica la pila de subprocesos que se va a mostrar. Si omite este parámetro, se muestra la pila del subproceso actual. Para obtener más información sobre la sintaxis de subprocesos, consulte Sintaxis de subproceso. Solo puede especificar subprocesos en modo de usuario.
Procesador
Especifica el procesador cuya pila se va a mostrar. Para obtener más información sobre la sintaxis del procesador, consulte Sintaxis de varios procesadores.
b
Muestra los tres primeros parámetros que se pasan a cada función del seguimiento de la pila.
c
Muestra un seguimiento de pila limpio. Cada línea de presentación incluye solo el nombre del módulo y el nombre de la función.
p
Muestra todos los parámetros de cada función a la que se llama en el seguimiento de la pila. La lista de parámetros incluye el tipo de datos, el nombre y el valor de cada parámetro. La p
opción distingue mayúsculas de minúsculas. Este parámetro requiere información completa de símbolos.
P
Muestra todos los parámetros de cada función a la que se llama en el seguimiento de la pila, como el p
parámetro . Sin embargo, para P
, los parámetros de función se imprimen en una segunda línea de la pantalla, en lugar de en la misma línea que el resto de los datos.
v
Muestra información de omisión del puntero de marco (FPO). En procesadores basados en x86, la pantalla también incluye información de convención de llamada.
n
Muestra los números de fotograma.
f
Muestra la distancia entre marcos adyacentes. Esta distancia es el número de bytes que separan los marcos de la pila real.
L
Oculta las líneas de origen en la pantalla. L
distingue mayúsculas de minúsculas.
M
Muestra la salida mediante el lenguaje de marcado del depurador. Cada número de fotograma de la pantalla es un vínculo que puede seleccionar para establecer el contexto local y mostrar variables locales. Para obtener información sobre el contexto local, vea .frame.
FrameCount
Especifica el número de marcos de pila que se van a mostrar. Debe especificar este número en formato hexadecimal a menos que haya cambiado el radix mediante el comando n (set number base). Use el comando .kframes (establecer longitud de pila) para mostrar el valor predeterminado y cambiar el valor.
BasePtr
Especifica el puntero base para el seguimiento de la pila. El BasePtr
parámetro solo está disponible si hay un signo igual (=) después del comando.
StackPtr
Especifica el puntero de pila para el seguimiento de la pila. Si omite StackPtr
y InstructionPtr
, el comando usa el puntero de pila que el registro rsp (o esp) especifica y el puntero de instrucción que especifica el registro de rip (o eip).
InstructionPtr
Especifica el puntero de instrucción para el seguimiento de la pila. Si omite StackPtr
y InstructionPtr
, el comando usa el puntero de pila que el registro rsp (o esp) especifica y el puntero de instrucción que especifica el registro de rip (o eip).
WordCount
Especifica el número de valores de DWORD_PTR de la pila que se va a volcar.
Entorno | |
---|---|
Modos | Modo de usuario, modo kernel |
Targets | Volcado de memoria activo y de memoria |
Plataformas | Todo |
Comentarios
Al emitir los k
comandos , kb
, kp
, kP
o kv
, se muestra un seguimiento de pila en un formato tabular. Si la carga de líneas está habilitada, también se muestran los módulos de origen y los números de línea.
El seguimiento de la pila incluye el puntero base para el marco de pila, la dirección de retorno y los nombres de función.
Si usa los kp
comandos o kP
, se muestran los parámetros completos de cada función a la que se llama en el seguimiento de la pila. La lista de parámetros incluye el tipo de datos, el nombre y el valor de cada parámetro.
El comando puede ser lento. Por ejemplo, cuando MyFunction1
llama a MyFunction2
, el depurador debe tener información de símbolos completa para MyFunction1
que muestre los parámetros que se pasan en esta llamada. Este comando no muestra completamente las rutinas internas de Microsoft Windows que no se exponen en símbolos públicos.
Si usa los kb
comandos o kv
, se muestran los tres primeros parámetros que se pasan a cada función. Si usa el kv
comando , también se muestran los datos de FPO.
En un procesador basado en x86, el kv
comando también muestra información de convención de llamada.
Cuando se usa el kv
comando , la información de FPO se agrega al final de la línea en el formato siguiente.
Texto de FPO | Significado |
---|---|
FPO: [no Fpo] | No hay datos de FPO para la trama. |
FPO: [N1,N2,N3] | N1 es el número total de parámetros. N2 es el número de valores DWORD para las variables locales. N3 es el número de registros que se guardan. |
FPO: [N1,N2] TrapFrame @ Address | N1 es el número total de parámetros. N2 es el número de valores DWORD para las variables locales. Address es la dirección del marco de captura. |
FPO: TaskGate Segment:0 | Segment es el selector de segmentos de la puerta de tareas. |
FPO: [EBP 0xBase] | Base es el puntero base del marco. |
El kd
comando muestra los datos de la pila sin procesar. Cada valor DWORD se muestra en una línea independiente. La información de símbolos se muestra para esas líneas junto con los símbolos asociados. Este formato crea una lista más detallada que los demás k*
comandos. El kd
comando es equivalente a un comando dds (memoria para mostrar) que usa la dirección de pila como parámetro.
Si usa el k
comando al principio de una función (antes de ejecutar el prólogo de la función), recibirá resultados incorrectos. El depurador usa el registro de fotogramas para calcular el retroceso actual y este registro no se establece correctamente para una función hasta que se haya ejecutado su prólogo.
En el modo de usuario, el seguimiento de la pila se basa en la pila del subproceso actual. Para obtener más información sobre los subprocesos, consulte Control de procesos y subprocesos.
En el modo kernel, el seguimiento de la pila se basa en el contexto de registro actual. Puede establecer el contexto de registro para que coincida con un subproceso específico, un registro de contexto o un marco de captura.
Información adicional
Para obtener más información sobre el contexto de registro y otras configuraciones de contexto, vea Cambiar contextos.