Volet État
Le volet État affiche des expressions booléennes pour les valeurs des variables dans le pilote, le modèle de système d’exploitation et la règle. SDV utilise ces expressions pour construire une abstraction du pilote, du modèle de système d’exploitation et de la règle, et les utilise dans la vérification.
La capture d’écran suivante montre un exemple de volet État dans la visionneuse de défauts.
Le volet État est un composant de la visionneuse des défauts. Lorsqu’un élément de code est mis en surbrillance dans le volet Arborescence de trace et que la ligne de code source correspondante est mise en surbrillance dans le volet Code source, le volet État affiche les expressions booléennes (à partir de l’ensemble d’expressions que SDV effectue le suivi pour le pilote) qui prennent la valeur TRUE avant l’exécution de la ligne de code.
Suivi des expressions booléennes
Lors de la vérification de chaque règle pour le pilote, SDV effectue le suivi d’un ensemble d’expressions booléennes. 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.
Interprétation des expressions dans le volet État
La plupart des expressions qui apparaissent dans le volet État sont liées à des variables évidentes dans le code de règle. Vous pouvez utiliser le code source pour la règle (dans le fichier RuleName.slic dans le volet Code source ) pour vous aider à interpréter les expressions.
Toutefois, certaines expressions apparaissent dans le volet État sans aucun détail sur leur représentation interne qui pourrait vous aider à les interpréter. Par exemple,
x!=x
Pour SDV, cette expression représente une condition dans laquelle la valeur de la variable x à ce stade de la trace n’est pas égale à la valeur de la même variable à un point différent de la trace. Utilisez le code source du pilote, le code de règle (*.slic) et les éléments du volet Arborescence de traces pour vous aider à interpréter les expressions.
Onglets d’étape dans le volet État
Les expressions booléennes dans le volet État sont affichées sous des onglets. Chaque onglet représente une étape dans la trace à travers tout le code source utilisé dans la vérification. Le nombre de l’onglet étape représente l’ordre de cette étape dans la trace.
En règle générale, étant donné que chaque ligne de code source ne représente qu’une seule étape de la trace, il n’y aura qu’un seul onglet d’étape dans le volet État . Toutefois, le code complexe peut générer de nombreuses étapes.
Par exemple, la capture d’écran suivante montre le volet État affichant une ligne de code qui inclut un pointeur de fonction. Dans ce cas, chaque onglet d’étape représente une étape dans la résolution du pointeur, l’appel de la fonction pointée et son résultat. (Le nombre d’onglets d’étape indique le nombre d’étapes nécessaires à SDV pour résoudre le pointeur de fonction.)
Pour afficher chaque onglet d’étape dans le volet État dans l’ordre, sélectionnez la ligne de code associée dans le volet Code source . Cliquez ensuite sur la ligne de code dans le volet Code source à plusieurs reprises. Chaque fois que vous cliquez sur la ligne de code sélectionnée, SDV affiche l’onglet de l’étape suivante jusqu’à ce que vous ayez parcouru tous les onglets de l’étape. La flèche jaune incurvée indique l’étape sélectionnée.
Vous pouvez également cliquer sur n’importe quel onglet dans le volet État pour afficher son contenu.
Commentaire
SDV effectue souvent le suivi des expressions dans le volet État qui n’apparaissent pas dans la règle et ne semblent pas être directement liées à la règle. Ces expressions sont le résultat d’une heuristique sophistiquée que SDV utilise pour mettre en corrélation différentes valeurs et différentes violations de règles. Dans certaines situations, SDV ne peut pas évaluer correctement l’expression. Dans ce cas, SDV fournit un message indiquant que l’état actuel est inconnu et affiche l’expression de l’étape avec le dernier état connu. Pour obtenir une explication, consultez l’exemple de code suivant :
Unknown state. Last known state from step 120.
sdv irql current ==2
sdv irql current!=1
sdv irql current!=0