Partilhar via


.step_filter (Definir filtro de etapas)

O comando .step_filter cria uma lista de funções que são ignoradas (escalonadas) durante o rastreamento. 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

"Lista de filtros"
Especifica os símbolos associados às funções a serem passadas em etapas. 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 curingas 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á passada durante o rastreamento. Cada vez 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 trace (por exemplo, t ou windbg debug | step into) rastreia em 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á escalonada – 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 WinDbg Step Out . É claro que esse filtro impediria que esse código fosse 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 passará por cima de ambas as chamadas de função:

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

O comando .step_filter permite filtrar uma dessas chamadas enquanto ainda rastreia para 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 do Microsoft Foundation Classes (MFC) ou da Active Template Library (ATL).

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