Partager via


.step_filter (Définir le filtre d’étape)

La commande .step_filter crée une liste de fonctions ignorées (pas à pas) lors du suivi. Cela vous permet de suivre le code et d’ignorer uniquement certaines fonctions. Il peut également être utilisé en mode source pour contrôler l’exécution pas à pas lorsqu’il y a plusieurs appels de fonction sur une seule ligne.

.step_filter "FilterList" 
.step_filter /c 
.step_filter 

Paramètres

« FilterList »
Spécifie les symboles associés aux fonctions à exécuter. FilterList peut contenir n’importe quel nombre de modèles de texte séparés par des points-virgules. Chacun de ces modèles peut contenir une variété de caractères génériques et de spécificateurs ; Pour plus d’informations , consultez Syntaxe de caractères génériques de chaîne . Une fonction dont le symbole correspond à au moins l’un de ces modèles sera pas à pas pendant le suivi. Chaque fois que «FilterList» est utilisé, toute liste de filtres précédente est ignorée et complètement remplacée par la nouvelle liste.

/C
Efface la liste de filtres.

Environnement

Élément Description
Modes Mode utilisateur, mode noyau
Targets Vidage en direct sur incident
Plateformes Tous

Remarques

Sans paramètres, .step_filter affiche la liste de filtres actuelle.

En règle générale, une commande de trace (par exemple, t ou windbg debug | step into) effectue des suivis dans un appel de fonction. Toutefois, si le symbole associé à la fonction appelée correspond à un modèle spécifié par FilterList, la fonction est pas à pas, comme si une commande step (par exemple, p) avait été utilisée.

Si le pointeur d’instruction se trouve dans le code répertorié dans la liste de filtres, toutes les commandes de trace ou d’étape sortent de cette fonction, comme la commande gu ou le bouton WinDbg Pas à pas sortant . Bien sûr, ce filtre empêcherait le suivi de ce code dans en premier lieu. Cela ne se produira donc que si vous avez modifié le filtre ou atteint un point d’arrêt.

Par exemple, la commande suivante entraîne l’échec des commandes de trace sur tous les appels CRT :

.step_filter "msvcrt!*" 

La commande .step_filter est particulièrement utile lorsque vous déboguez en mode source, car il peut y avoir plusieurs appels de fonction sur une seule ligne source. Les commandes p et t ne peuvent pas être utilisées pour séparer ces appels de fonction.

Par exemple, dans la ligne suivante, la commande t effectue un pas à pas détaillé dans GetTickCount et printf, tandis que la commande p effectue un pas à pas sur les deux appels de fonction :

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

La commande .step_filter vous permet de filtrer l’un de ces appels tout en effectuant le suivi dans l’autre.

Étant donné que les fonctions sont identifiées par un symbole, un seul filtre peut inclure un module entier. Cela vous permet de filtrer les fonctions d’infrastructure, par exemple, les appels MFC (Microsoft Foundation Classes) ou ATL (Active Template Library).

Lors du débogage en mode assembly, chaque appel se trouve sur une ligne différente. Vous pouvez donc choisir d’effectuer un suivi ligne par ligne ou pas à pas. Par conséquent , .step_filter n’est pas très utile en mode assembly.