Condividi tramite


Uso del report verifica driver statico

Il report SDV è una visualizzazione interattiva dei risultati della verifica. Questa sezione illustra come usare il report SDV per individuare un errore di codifica nel driver. Per informazioni dettagliate sul report, sulle funzionalità delle finestre e sugli elementi nelle finestre, vedere Report verifica driver statico.

Aprire il visualizzatore di difetti del driver statico

Se SDV ha segnalato eventuali "difetti" (violazioni delle regole) nel riquadro Risultati , è possibile visualizzare il codice coinvolto nella violazione nella finestra Visualizzatore difetti del report di verifica driver statici. La finestra Visualizzatore difetti visualizza il codice nel percorso della violazione della regola. Esiste una finestra Visualizzatore difetti per ogni regola che è stata violata (è possibile visualizzare una sola finestra visualizzatore difetti alla volta).

Per aprire la finestra Visualizzatore difetti per un difetto:

  • Selezionare una regola dall'elenco nel nodo Difetti .

Icona cerchio rosso con una X bianca, che rappresenta un difetto.

Questa procedura funziona solo per i difetti. SDV non genera una finestra visualizzatore difetti se i risultati di una verifica non sono difetti, ad esempio passaggi, timeout, spaziout, non applicabili o altri risultati non difetti.

La schermata seguente mostra una pagina report del driver statico.

Screenshot di una pagina report di verifica driver statici.

Esaminare la regola

Prima di cercare di trovare la violazione della regola nel codice, acquisire familiarità con le regole che il driver ha violato.

La sezione Regole di verifica driver statici include un argomento che illustra ogni regola, ad esempio CancelSpinLock.

Per visualizzare il codice per la regola, nel riquadro Codice sorgente del report di verifica driver statico fare clic sulla scheda con il codice della regola, ad esempio CancelSpinLock.slic.

Ad esempio, la regola CancelSpinLock viene violata se il driver chiama IoAcquireCancelSpinLock o IoReleaseCancelSpinLock in ordine esterno oppure se il driver chiude la routine prima di rilasciare il blocco di spin.

Tracciare il percorso dei difetti

Quando viene visualizzata la finestra Visualizzatore difetti , viene selezionato l'elemento nel riquadro Albero traccia che rappresenta la prima chiamata di driver critico nel percorso di difetti. Nel riquadro Codice sorgente la riga associata del codice sorgente è evidenziata in blu.

La schermata seguente mostra la visualizzazione di apertura della finestra Visualizzatore difetti del driver statico per una violazione della regola CancelSpinLock dal driver di esempio Fail_Driver1. In questo esempio la prima chiamata driver nel percorso a una violazione della regola CancelSpinLock è una chiamata a IoAcquireCancelSpinLock nella routine DispatchSystemControl del driver.

Screenshot della visualizzazione di apertura della finestra Visualizzatore di difetti del driver statico per una violazione della regola CancelSpinLock.

Usare il riquadro codice sorgente

Nel riquadro Codice sorgente vengono visualizzati i file di origine usati nella verifica. Quando viene selezionato un elemento nel riquadro Albero traccia , il file di codice sorgente associato all'elemento viene visualizzato nella parte superiore dello stack di file nel riquadro Codice sorgente adiacente. Per visualizzare un file di origine diverso, fare clic sulla scheda per il file di origine nel riquadro Codice sorgente .

La schermata seguente mostra il riquadro Codice sorgente. In questo riquadro Codice sorgente le righe di codice evidenziate in blu pallido sono quelle associate all'elemento selezionato nel riquadro Albero traccia .

Screenshot del riquadro Codice sorgente nel visualizzatore di difetti del driver statico.

Le righe nel codice del driver eseguite nel percorso del difetto vengono visualizzate nel testo rosso. Esaminando solo le righe di testo rosso, ad esempio la riga 116 e 118 in questo esempio, a volte si può vedere il difetto, soprattutto un difetto semplice come quello usato in questo esempio. In questo caso, il driver acquisisce il blocco di rotazione e quindi restituisce dalla routine di invio senza rilasciare il blocco di rotazione.

Eseguire il passaggio della traccia

Per iniziare la traccia, selezionare un elemento nel riquadro Albero traccia e quindi premere il tasto FRECCIA GIÙ. Ogni volta che si preme FRECCIA GIÙ, viene selezionato l'elemento successivo nel riquadro Albero traccia .

Durante il passaggio degli elementi nel riquadro Albero di traccia, watch il riquadro Codice sorgente per gli elementi dal codice driver. Per espandere una sezione compressa del codice, premere il tasto FRECCIA DESTRA. Per comprimere una sezione espansa del codice, premere il tasto FRECCIA SINISTRA. Il cursore ignora tutte le sezioni compresse del codice.

Quando si scorre verso il basso gli elementi nel riquadro Albero traccia , il file di codice sorgente in cui l'elemento selezionato ha origine si sposta nella parte superiore dello stack di file nel riquadro Codice sorgente e viene evidenziata la riga di codice associata.

La schermata seguente mostra il visualizzatore di difetti del driver statico con il riquadro Albero di traccia e codice sorgente.

Screenshot di una pagina report di verifica driver statici con riquadri Albero di traccia e codice sorgente.

Usare il riquadro File di regola e stato

È possibile usare il riquadro stato per visualizzare il set di espressioni booleane che rappresentano i valori delle variabili tracciate da SDV durante la verifica.

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.

Quando si esegue il passaggio del riquadro Albero di traccia , è possibile osservare come SDV usa i valori di queste variabili per valutare le espressioni usate nel file delle regole (*.slic).

La schermata seguente della pagina Report del driver statico mostra come i test SDV indicano se il driver aveva precedentemente acquisito un blocco di rotazione. SDV verifica se il driver ha acquisito in precedenza un blocco di rotazione, ovvero se il valore della variabile s è 1, ovvero bloccato. In questo caso, s!=1 (sbloccato), come visualizzato nel riquadro Stato, quindi SDV imposta il valore di s su 1, che indica che il blocco viene acquisito.

Screenshot di una pagina report di verifica driver statici che mostra i test SDV per il blocco spin acquisito in precedenza.

Trovare la routine ABORT

Quando il codice driver viola una regola, il riquadro Albero di traccia contiene una routine ABORT per segnalare il difetto.

Quando il percorso del codice a un difetto è lungo e complesso, spesso è utile scorrere verso il basso nel riquadro Albero traccia fino a trovare la routine ABORT e quindi usare il tasto FRECCIA SU per trovare il codice che ha attivato immediatamente il report di difetto.

Ad esempio, come illustrato nella schermata seguente, la routine ABORT è associata a una riga dal file CancelSpinLock.slic che segnala il difetto dopo aver verificato se il blocco viene acquisito (s==bloccato). Il test fa parte di una subroutine eseguita al termine della routine di invio. Da queste informazioni è possibile dedurre che il driver non è riuscito a rilasciare un blocco di spin prima di restituire dalla routine di invio.

Screenshot di una pagina Report del verifica driver statico che mostra la routine ABORT associata a una riga dal file CancelSpinLock.slic.

Chiudere il visualizzatore di difetti del driver statico

Dopo aver identificato l'errore di codice che ha causato il difetto, è possibile chiudere la finestra Visualizzatore difetti del driver statico per la regola corrente e quindi aprire il Visualizzatore difetti per una regola diversa.

Per chiudere il Visualizzatore difetti per una regola:

  • Dal menu File selezionare Esci.

È anche possibile fare clic sul pulsante Chiudi (X) per il Visualizzatore difetti. Si trova appena sotto il pulsante Chiudi (X) per il report di verifica driver statico.

La schermata seguente mostra come chiudere il Visualizzatore difetti.

Screenshot che illustra come chiudere il Visualizzatore difetti per una regola in Verifica driver statico.