Condividi tramite


Riquadro stato

Il riquadro Stato visualizza espressioni booleane per i valori delle variabili nel driver, il modello del sistema operativo e la regola. SDV usa queste espressioni per costruire un'astrazione del driver, del modello del sistema operativo e della regola e li usa nella verifica.

La schermata seguente mostra un riquadro Stato di esempio nel Visualizzatore difetti.

Screenshot del riquadro Stato nel Visualizzatore difetti.

Il riquadro Stato è un componente del Visualizzatore difetti. Quando un elemento di codice viene evidenziato nel riquadro Albero traccia e la riga corrispondente del codice sorgente viene evidenziata nel riquadro Codice sorgente, il riquadro Stato visualizza le espressioni booleane (dal set di espressioni che SDV sta tracciando per il driver) che valutano TRUE prima dell'esecuzione della riga di codice.

Rilevamento delle espressioni booleane

Durante la verifica di ogni regola per il driver, SDV tiene traccia di un set di espressioni booleane. Le espressioni booleane visualizzate nel riquadro Stato sono le espressioni in tale set che valutano true. Se l'elemento nel riquadro Albero traccia modifica il valore di qualsiasi espressione, il contenuto del riquadro Stato cambia per visualizzare il nuovo set di espressioni che restituisce TRUE.

Interpretazione delle espressioni nel riquadro stato

La maggior parte delle espressioni visualizzate nel riquadro Stato è correlata alle variabili che sono evidenti nel codice della regola. È possibile usare il codice sorgente per la regola (nel file RuleName.slic nel riquadro Codice sorgente ) per interpretare le espressioni.

Tuttavia, alcune espressioni vengono visualizzate nel riquadro Stato senza alcun dettaglio sulla relativa rappresentazione interna che potrebbe aiutare a interpretarli. Ad esempio,

x!=x

Per SDV, questa espressione rappresenta una condizione in cui il valore di variabile x a questo punto della traccia non è uguale al valore della stessa variabile in un punto diverso nella traccia. Usare il codice sorgente del driver, il codice della regola (*.slic) e gli elementi nel riquadro Albero traccia per interpretare le espressioni.

Schede dei passaggi nel riquadro stato

Le espressioni booleane nel riquadro Stato vengono visualizzate nelle schede. Ogni scheda rappresenta un passaggio della traccia tramite tutto il codice sorgente usato nella verifica. Il numero nella scheda passaggio rappresenta l'ordine di tale passaggio nella traccia.

In genere, poiché ogni riga di codice sorgente rappresenta un solo passaggio nella traccia, nel riquadro Stato sarà presente una sola scheda passaggio. Tuttavia, il codice complesso può generare molti passaggi.

Ad esempio, la schermata seguente mostra il riquadro Stato che visualizza una riga di codice che include un puntatore alla funzione. In questo caso, ogni scheda passaggio rappresenta un passaggio nella risoluzione del puntatore, la chiamata della funzione a punta e il relativo risultato. Il numero di schede dei passaggi rivela il numero di passaggi necessari per sdV per risolvere il puntatore alla funzione.

Screenshot del riquadro Stato che visualizza una riga di codice con un puntatore alla funzione.

Per visualizzare ogni scheda passaggio nel riquadro Stato in ordine, selezionare la riga di codice associata nel riquadro Codice sorgente . Fare quindi clic sulla riga di codice nel riquadro Codice sorgente ripetutamente. Ogni volta che si fa clic sulla riga di codice selezionata, SDV visualizza la scheda passaggio successivo fino a quando non è stato eseguito il ciclo attraverso tutte le schede dei passaggi. La freccia gialla curva indica il passaggio selezionato.

Icona di una freccia gialla curva che indica il passaggio selezionato.

È anche possibile fare clic su qualsiasi scheda nel riquadro Stato per visualizzarne il contenuto.

Commento

SDV tiene spesso traccia delle espressioni nel riquadro Stato che non vengono visualizzate nella regola e non sembrano essere direttamente correlate alla regola. Queste espressioni derivano da un'euristica sofisticata che SDV usa nei suoi tentativi di correlare valori diversi e violazioni di regole diverse. In alcune situazioni, SDV non può valutare correttamente l'espressione. In questi casi, SDV fornisce un messaggio che indica che lo stato corrente è sconosciuto e visualizza l'espressione dal passaggio con l'ultimo stato noto. Per una spiegazione, vedere l'esempio di codice seguente:

Unknown state. Last known state from step 120.
sdv irql current ==2
sdv irql current!=1
sdv irql current!=0