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 les pas à pas lorsqu’il existe 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 à passer à pas. 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. 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 Live, vidage de la mémoire
Platforms Tous

Notes

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

En règle générale, une commande de trace (par exemple, t ou le débogage windbg | pas à pas dans] effectue des traces 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 d’étape (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 Pas à pas winDbg. Bien sûr, ce filtre empêcherait le suivi de ce code dans la première place. Cela ne se produit 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 la plus 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 passe à la fois 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 symbole, un seul filtre peut inclure un module entier. Cela vous permet de filtrer les fonctions de framework : par exemple, les appels MFC (Microsoft Foundation Classes) ou ATL (Active Template Library).

Lorsque vous déboguez en mode assembly, chaque appel se trouve sur une ligne différente. Vous pouvez donc choisir d’effectuer des étapes ou de tracer la ligne par ligne. Par conséquent , .step_filter n’est pas très utile en mode assembly.