Utilisation du rapport du vérificateur de pilote statique
Le rapport SDV est un affichage interactif des résultats de la vérification. Cette section explique comment utiliser le rapport SDV pour localiser une erreur de codage dans le pilote. Pour plus d’informations sur le rapport, les fonctionnalités des fenêtres et les éléments dans les fenêtres, consultez Rapport du vérificateur de pilote statique.
Ouvrir la visionneuse des défauts du vérificateur de pilote statique
Si SDV a signalé des « défauts » (violations de règle) dans le volet Résultats , vous pouvez afficher le code impliqué dans la violation dans la fenêtre Visionneuse des défauts du rapport du vérificateur de pilote statique. La fenêtre Visionneuse des défauts affiche le code dans le chemin d’accès à la violation de règle. Il existe une fenêtre Visionneuse des défauts pour chaque règle qui a été violée (vous ne pouvez afficher qu’une seule fenêtre de visionneuse des défauts à la fois).
Pour ouvrir la fenêtre Visionneuse des défauts pour un défaut :
- Sélectionnez une règle dans la liste sous le nœud Défaut(s) .
Cette procédure fonctionne uniquement pour les défauts. SDV ne génère pas de fenêtre De visionneuse des défauts si les résultats d’une vérification ne sont pas des défauts, tels que des passes, des délais d’expiration, des espaces, non applicables ou tout autre résultat non-défaut.
La capture d’écran suivante montre une page Rapport du vérificateur de pilote statique.
Passer en revue la règle
Avant d’essayer de trouver la violation de règle dans le code, familiarisez-vous avec les règles que le conducteur a violées.
La section Règles du vérificateur de pilote statique comprend une rubrique qui explique chaque règle, par exemple CancelSpinLock.
Pour afficher le code de la règle, dans le volet Code source du rapport du vérificateur de pilote statique, cliquez sur l’onglet contenant le code de la règle, par exemple CancelSpinLock.slic.
Par exemple, la règle CancelSpinLock est violée si le pilote appelle IoAcquireCancelSpinLock ou IoReleaseCancelSpinLock dans le désordre, ou si le pilote quitte la routine avant de libérer le verrouillage de rotation.
Tracer le chemin du défaut
Lorsque la fenêtre Visionneuse des défauts s’ouvre, l’élément dans le volet Arborescence de traces qui représente le premier appel de pilote critique dans le chemin d’accès du défaut est sélectionné. Dans le volet Code source , la ligne de code source associée est mise en surbrillance en bleu.
La capture d’écran suivante montre la vue d’ouverture de la fenêtre Visionneuse de défauts du vérificateur de pilote statique pour une violation de la règle CancelSpinLock par l’exemple de pilote Fail_Driver1. Dans cet exemple, le premier appel de pilote dans le chemin d’accès à une violation de la règle CancelSpinLock est un appel à IoAcquireCancelSpinLock dans la routine DispatchSystemControl du pilote.
Utiliser le volet Code source
Le volet Code source affiche les fichiers sources utilisés dans la vérification. Lorsqu’un élément du volet Arborescence de traces est sélectionné, le fichier de code source associé à l’élément apparaît en haut de la pile de fichiers dans le volet Code source adjacent. Pour afficher un autre fichier source, cliquez sur l’onglet du fichier source dans le volet Code source .
La capture d’écran suivante montre le volet Code source. Dans ce volet Code source , les lignes de code mises en surbrillance en bleu pâle sont celles qui sont associées à l’élément sélectionné dans le volet Arborescence de trace .
Les lignes du code du pilote qui sont exécutées dans le chemin d’accès au défaut sont affichées en texte rouge. En examinant uniquement les lignes de texte rouge, comme les lignes 116 et 118 dans cet exemple, vous pouvez parfois voir le défaut, en particulier un défaut simple comme celui utilisé dans cet exemple. Dans ce cas, le pilote acquiert le verrou de rotation, puis retourne à partir de la routine de distribution sans relâcher le verrou de rotation.
Pas à pas détaillé dans la trace
Pour commencer le suivi, sélectionnez un élément dans le volet Arborescence de traces, puis appuyez sur la flèche bas. Chaque fois que vous appuyez sur Flèche bas, l’élément suivant dans le volet Arborescence de trace est sélectionné.
Lorsque vous parcourez pas à pas les éléments du volet Arborescence de trace, watch le volet Code source pour les éléments du code du pilote. Pour développer une section réduite de code, appuyez sur la touche FLÈCHE DROITE. Pour réduire une section de code développée, appuyez sur la flèche gauche. Le curseur ignore toutes les sections réduites du code.
Lorsque vous faites défiler les éléments dans le volet Arborescence de trace, le fichier de code source dans lequel provient l’élément sélectionné se déplace vers le haut de la pile de fichiers dans le volet Code source et la ligne de code associée est mise en surbrillance.
La capture d’écran suivante montre la visionneuse de défauts du vérificateur de pilote statique avec les volets Arborescence de trace et Code source.
Utiliser le fichier de règle et le volet État
Vous pouvez utiliser le volet État pour afficher l’ensemble d’expressions booléennes qui représentent les valeurs des variables que SDV suit pendant la vérification.
Les expressions booléennes affichées dans le volet État sont les expressions de ce jeu qui prennent la valeur TRUE. Si l’élément dans le volet Arborescence de trace modifie la valeur d’une expression, le contenu du volet État change pour afficher le nouvel ensemble d’expressions qui prend la valeur TRUE.
Lorsque vous parcourez le volet Arborescence de traces, vous pouvez observer comment SDV utilise les valeurs de ces variables pour évaluer les expressions utilisées dans le fichier de règles (*.slic).
La capture d’écran suivante de la page Rapport du vérificateur de pilote statique montre comment les tests SDV indiquent si le pilote a déjà acquis un verrou de rotation. SDV teste pour voir si le pilote avait précédemment acquis un verrou de rotation, c’est-à-dire si la valeur de la variable s est 1, ce qui signifie verrouillé. Dans ce cas, s !=1 (déverrouillé), tel qu’affiché dans le volet État, SDV définit la valeur de s sur 1, indiquant que le verrou est acquis.
Rechercher la routine ABORT
Lorsque le code du pilote enfreint une règle, le volet Arborescence de trace contient une routine ABORT pour signaler le défaut.
Lorsque le chemin du code vers un défaut est long et complexe, il est souvent utile de faire défiler le volet Arborescence de trace jusqu’à trouver la routine ABORT , puis d’utiliser la flèche vers le haut pour trouver le code qui a le plus immédiatement déclenché le rapport de défaut.
Par exemple, comme illustré dans la capture d’écran suivante, la routine ABORT est associée à une ligne du fichier CancelSpinLock.slic qui signale le défaut après avoir testé si le verrou est acquis (s==locked). Le test fait partie d’une sous-routine qui est effectuée à la fin de la routine de distribution. À partir de ces informations, vous pouvez déduire que le pilote n’a pas réussi à libérer un verrou de rotation avant de revenir de la routine de répartition.
Fermer la visionneuse de défauts du vérificateur de pilote statique
Une fois que vous avez identifié l’erreur de code à l’origine du défaut, vous pouvez fermer la fenêtre Visionneuse de défauts du vérificateur de pilote statique pour la règle actuelle, puis ouvrir la visionneuse des défauts pour une autre règle.
Pour fermer l’observateur de défauts pour une règle :
- Dans le menu Fichier , sélectionnez Quitter.
Vous pouvez également cliquer sur le bouton Fermer (X) pour la visionneuse de défauts. Il se trouve juste en dessous du bouton Fermer (X) pour le rapport du vérificateur de pilote statique.
La capture d’écran suivante montre comment fermer la visionneuse de défauts.