Compartilhar via


.step_filter (Definir Filtro de Etapa)

O comando .step_filter cria uma lista de funções que são ignoradas (escalonadas) ao rastrear. Isso permite que você rastreie o código e ignore apenas determinadas funções. Ele também pode ser usado no modo de origem para controlar a etapa quando há várias chamadas de função em uma linha.

.step_filter "FilterList" 
.step_filter /c 
.step_filter 

Parâmetros

"FilterList"
Especifica os símbolos associados às funções a serem pisadas. FilterList pode conter qualquer número de padrões de texto separados por ponto e vírgula. Cada um desses padrões pode conter uma variedade de caracteres curinga e especificadores; consulte Sintaxe curinga de cadeia de caracteres para obter detalhes. Uma função cujo símbolo corresponde a pelo menos um desses padrões será pisada durante o rastreamento. Sempre que "FilterList" é usado, qualquer lista de filtros anterior é descartada e completamente substituída pela nova lista.

/C
Limpa a lista de filtros.

Ambiente

Item Descrição
Modos Modo de usuário, modo kernel
Destinos Ao vivo, despejo de memória
Plataformas Tudo

Comentários

Sem parâmetros, .step_filter exibe a lista de filtros atual.

Normalmente, um comando de rastreamento (por exemplo, t ou a depuração windbg | step into] rastreia uma chamada de função. No entanto, se o símbolo associado à função que está sendo chamada corresponder a um padrão especificado por FilterList, a função será pisada -- como se um comando de etapa (por exemplo, p) tivesse sido usado.

Se o ponteiro de instrução estiver localizado no código listado na lista de filtros, todos os comandos de rastreamento ou etapa sairão dessa função, como o comando gu ou o botão Sair do WinDbg. É claro que esse filtro evitará que esse código tenha sido rastreado em primeiro lugar, portanto, isso só acontecerá se você tiver alterado o filtro ou atingido um ponto de interrupção.

Por exemplo, o comando a seguir fará com que os comandos de rastreamento ignorem todas as chamadas CRT:

.step_filter "msvcrt!*" 

O comando .step_filter é mais útil quando você está depurando no modo de origem, pois pode haver várias chamadas de função em uma única linha de origem. Os comandos p e t não podem ser usados para separar essas chamadas de função.

Por exemplo, na linha a seguir, o comando t entrará em GetTickCount e printf, enquanto o comando p percorrerá as duas chamadas de função:

printf( "%x\n", GetTickCount() );

O comando .step_filter permite filtrar uma dessas chamadas enquanto ainda está rastreando a outra.

Como as funções são identificadas por símbolo, um único filtro pode incluir um módulo inteiro. Isso permite filtrar funções de estrutura , por exemplo, chamadas MFC (Microsoft Foundation Classes) ou ATL (Biblioteca de Modelos Ativos).

Ao depurar no modo de assembly, cada chamada está em uma linha diferente, para que você possa escolher se deseja percorrer ou rastrear linha por linha. Portanto , .step_filter não é muito útil no modo de assembly.