.step_filter (imposta filtro passaggio)
Il comando .step_filter crea un elenco di funzioni ignorate (con rientri) durante la traccia. In questo modo è possibile tracciare il codice e ignorare solo determinate funzioni. Può essere usato anche in modalità di origine per controllare l'esecuzione di istruzioni quando sono presenti più chiamate di funzione su una sola riga.
.step_filter "FilterList"
.step_filter /c
.step_filter
Parametri
"FilterList"
Specifica i simboli associati alle funzioni da superare. FilterList può contenere un numero qualsiasi di modelli di testo separati da punti e virgola. Ognuno di questi modelli può contenere una varietà di caratteri jolly e identificatori; Per informazioni dettagliate, vedere Sintassi con caratteri jolly stringa. Funzione il cui simbolo corrisponde ad almeno uno di questi modelli verrà superato durante la traccia. Ogni volta che viene usato "FilterList", qualsiasi elenco di filtri precedente viene rimosso e completamente sostituito con il nuovo elenco.
/c
Cancella l'elenco di filtri.
Ambiente
Articolo | Descrizione |
---|---|
Modalità | Modalità utente, modalità kernel |
Target | Live, crash dump |
Piattaforme | Tutte le date |
Osservazioni:
Senza parametri, .step_filter visualizza l'elenco di filtri corrente.
In genere, un comando di traccia (ad esempio, t o il debug windbg | eseguire l'istruzione in] tracce in una chiamata di funzione. Tuttavia, se il simbolo associato alla funzione chiamata corrisponde a un criterio specificato da FilterList, la funzione verrà usata come se fosse stato usato un comando step (ad esempio, p).
Se il puntatore all'istruzione si trova all'interno del codice elencato nell'elenco di filtri, tutti i comandi di traccia o passaggio esce da questa funzione, ad esempio il comando gu o il pulsante Esci dall'istruzione WinDbg. Naturalmente, questo filtro impedisce che tale codice sia stato tracciato in al primo posto, quindi ciò si verifica solo se il filtro è stato modificato o ha raggiunto un punto di interruzione.
Ad esempio, il comando seguente causerà il ignorare tutti i comandi di traccia di tutte le chiamate CRT:
.step_filter "msvcrt!*"
Il comando .step_filter è più utile quando si esegue il debug in modalità di origine, perché possono essere presenti più chiamate di funzione su una singola riga di origine. I comandi p e t non possono essere usati per separare queste chiamate di funzione.
Nella riga seguente, ad esempio, il comando t eseguirà sia GetTickCount che printf, mentre il comando p eseguirà il passaggio su entrambe le chiamate di funzione:
printf( "%x\n", GetTickCount() );
Il comando .step_filter consente di filtrare una di queste chiamate mentre si esegue l'analisi nell'altra.
Poiché le funzioni sono identificate dal simbolo, un singolo filtro può includere un intero modulo. In questo modo è possibile filtrare le funzioni del framework, ad esempio le chiamate di Microsoft Foundation Classes (MFC) o Active Template Library (ATL).
Quando si esegue il debug in modalità assembly, ogni chiamata si trova in una riga diversa, quindi è possibile scegliere se eseguire il passaggio o tracciare riga per riga. Quindi .step_filter non è molto utile in modalità assembly.