.step_filter (Schrittfilter festlegen)

Der .step_filter-Befehl erstellt eine Liste von Funktionen, die bei der Ablaufverfolgung übersprungen (gestuft) werden. Dadurch können Sie Code nachverfolgen und nur bestimmte Funktionen überspringen. Es kann auch im Quellmodus verwendet werden, um das Schrittschritt zu steuern, wenn mehrere Funktionsaufrufe in einer Zeile vorhanden sind.

.step_filter "FilterList" 
.step_filter /c 
.step_filter 

Parameter

"FilterList"
Gibt die Symbole an, die den zu übertragenden Funktionen zugeordnet sind. FilterList kann eine beliebige Anzahl von Textmustern enthalten, die durch Semikolons getrennt sind. Jedes dieser Muster kann eine Vielzahl von Wildcards und Bezeichnern enthalten; Weitere Informationen finden Sie unter Syntax für Zeichenfolgenplatzhalter . Eine Funktion, deren Symbol mindestens einem dieser Muster entspricht, wird während der Ablaufverfolgung überschritten. Bei jeder Verwendung von "FilterList" wird jede vorherige Filterliste verworfen und vollständig durch die neue Liste ersetzt.

/C
Löscht die Filterliste.

Environment

Element BESCHREIBUNG
Modi Benutzermodus, Kernelmodus
Targets Liveabbild, Absturzabbild
Plattformen All

Hinweise

Ohne Parameter zeigt .step_filter die aktuelle Filterliste an.

In der Regel wird ein Ablaufverfolgungsbefehl (z. B. t oder der windbg-Debug | Schritt in) in einen Funktionsaufruf nachverfolgt. Wenn das Symbol, das der aufgerufenen Funktion zugeordnet ist, jedoch einem von FilterList angegebenen Muster entspricht, wird die Funktion überschritten , als ob ein Schrittbefehl (z. B. p) verwendet worden wäre.

Wenn sich der Anweisungszeiger im Code befindet, der in der Filterliste aufgeführt ist, werden alle Ablaufverfolgungs- oder Schrittbefehle aus dieser Funktion entfernt, z. B. der Befehl gu oder die Schaltfläche WinDbg Step Out . Natürlich würde dieser Filter verhindern, dass dieser Code überhaupt nachvollzogen wurde, sodass dies nur geschieht, wenn Sie den Filter geändert oder einen Haltepunkt erreicht haben.

Der folgende Befehl bewirkt beispielsweise, dass Ablaufverfolgungsbefehle alle CRT-Aufrufe überspringen:

.step_filter "msvcrt!*" 

Der .step_filter-Befehl ist am nützlichsten, wenn Sie im Quellmodus debuggen, da es mehrere Funktionsaufrufe in einer einzelnen Quellzeile geben kann. Die Befehle p und t können nicht verwendet werden, um diese Funktionsaufrufe zu trennen.

In der folgenden Zeile tritt der t-Befehl beispielsweise sowohl in GetTickCount als auch in printf ein, während der p-Befehl beide Funktionsaufrufe überschritten:

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

Mit dem Befehl .step_filter können Sie einen dieser Aufrufe herausfiltern und gleichzeitig die Ablaufverfolgung in den anderen ausführen.

Da die Funktionen durch ein Symbol gekennzeichnet sind, kann ein einzelner Filter ein gesamtes Modul enthalten. Dadurch können Sie Frameworkfunktionen herausfiltern, z. B. MFC-Aufrufe (Microsoft Foundation Classes) oder Active Template Library (ATL).

Beim Debuggen im Assemblymodus befindet sich jeder Aufruf in einer anderen Zeile, sodass Sie wählen können, ob Sie Zeilen für Zeile schrittweise oder nachverfolgen möchten. Daher ist .step_filter im Assemblymodus nicht sehr nützlich.