.step_filter (Establecer filtro de pasos)
El comando .step_filter crea una lista de funciones que se omiten (escalonados) al realizar el seguimiento. Esto le permite realizar un seguimiento a través del código y omitir solo determinadas funciones. También se puede usar en modo de código fuente para controlar la ejecución paso a paso cuando hay varias llamadas de función en una sola línea.
.step_filter "FilterList"
.step_filter /c
.step_filter
Parámetros
"FilterList"
Especifica los símbolos asociados a las funciones que se van a pasar por alto. FilterList puede contener cualquier número de patrones de texto separados por punto y coma. Cada uno de estos patrones puede contener una variedad de caracteres comodín y especificadores; Consulte Sintaxis de caracteres comodín de cadena para obtener más información. Una función cuyo símbolo coincide con al menos uno de estos patrones se superará durante el seguimiento. Cada vez que se usa "FilterList", cualquier lista de filtros anterior se descarta y se reemplaza completamente por la nueva lista.
/c
Borra la lista de filtros.
Entorno
Elemento | Descripción |
---|---|
Modos | Modo de usuario, modo kernel |
Destinos | En tiempo real, volcado de errores |
Platforms | All |
Comentarios
Sin ningún parámetro, .step_filter muestra la lista de filtros actual.
Normalmente, un comando de seguimiento (por ejemplo, t o la depuración de windbg | paso a paso por instrucciones] realiza un seguimiento en una llamada de función. Sin embargo, si el símbolo asociado a la función a la que se llama coincide con un patrón especificado por FilterList, la función se pasará por alto, como si se hubiera usado un comando de paso (por ejemplo, p).
Si el puntero de instrucción se encuentra dentro del código que aparece en la lista de filtros, los comandos de seguimiento o paso se desconectan de esta función, como el comando gu o el botón Salir del paso a paso de WinDbg. Por supuesto, este filtro impediría que este código se hubiera rastreado en primer lugar, por lo que esto solo ocurrirá si ha cambiado el filtro o ha alcanzado un punto de interrupción.
Por ejemplo, el siguiente comando hará que los comandos de seguimiento omitan todas las llamadas de CRT:
.step_filter "msvcrt!*"
El comando .step_filter es más útil cuando se depura en modo de origen, ya que puede haber varias llamadas de función en una sola línea de origen. Los comandos p y t no se pueden usar para separar estas llamadas de función.
Por ejemplo, en la línea siguiente, el comando t pasará a paso a paso en GetTickCount e printf, mientras que el comando p recorrerá paso a paso por paso las dos llamadas de función:
printf( "%x\n", GetTickCount() );
El comando .step_filter permite filtrar una de estas llamadas mientras sigue trazando en la otra.
Dado que las funciones se identifican por símbolo, un único filtro puede incluir un módulo completo. Esto le permite filtrar las funciones del marco, por ejemplo, llamadas a Microsoft Foundation Classes (MFC) o Active Template Library (ATL).
Al depurar en modo de ensamblado, cada llamada está en una línea diferente, por lo que puede elegir si se va a realizar un seguimiento de línea a línea o paso a paso. Por lo tanto , .step_filter no es muy útil en modo de ensamblado.