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 Static Driver Verifier Report.For detailed information about the report, the features of the windows, and the elements in the windows, see Static Driver Verifier Report.

Aprire il Visualizzatore Difetti del Verificatore 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 verifica driver statico. Nella finestra Visualizzatore difetti viene visualizzato il codice nel percorso della violazione della regola. È presente una finestra visualizzatore difetti per ogni regola 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 Defect(s).

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

Questa procedura funziona solo per i difetti. SDV non genera una finestra del Visualizzatore difetti se i risultati di una verifica non sono difetti, come esiti positivi, timeout, lacune, non applicabili o qualsiasi altro risultato non difettoso.

La schermata seguente mostra una pagina del report del verificatore di driver statico.

Screenshot di una pagina del rapporto del verificatore dei driver statici.

Esaminare la regola

Prima di cercare di trovare la violazione della regola nel codice, acquisire familiarità con le regole violate dal driver.

La sezione Regole di verifica driver statico 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 errato, oppure se il driver esce dalla routine prima di rilasciare lo spin lock.

Tracciare il percorso dei difetti

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

La schermata seguente mostra la vista iniziale della finestra Visualizzatore difetti del driver statico per una violazione della regola CancelSpinLock da parte del driver di esempio Fail_Driver1. In questo esempio, la prima chiamata del 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 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 di 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 relativa al 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 chiaro sono quelle associate all'elemento selezionato nel riquadro Albero di traccia .

Screenshot del riquadro Codice sorgente nel Visualizzatore di Difetti del Verificatore Statistico del Driver.

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

Passare attraverso la traccia

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

Mentre analizzi gli elementi nel riquadro Albero di traccia, osserva il riquadro Codice sorgente per gli elementi del 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 salta tutte le sezioni collassate di codice.

Scorrendo verso il basso gli elementi nel riquadro Albero di traccia, il file di codice sorgente da cui deriva l'elemento selezionato viene spostato all'inizio dello stack di file nel riquadro Codice sorgente e la riga di codice associata viene evidenziata.

La schermata seguente mostra il Visualizzatore di difetti del Driver Statico con i riquadri "Albero di traccia" e "Codice sorgente."

Screenshot di una pagina del Report di Verificatore Driver Statico con i riquadri Albero di Traccia e Codice Sorgente.

Usare il file delle regole e il riquadro dello stato

È possibile usare il riquadro di 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 restituiscono VERO. Se l'elemento nel riquadro Albero di traccia modifica il valore di qualsiasi espressione, il contenuto del riquadro Stato cambia per visualizzare il nuovo set di espressioni che restituiscono TRUE.

Quando esamini il riquadro Albero di traccia, puoi osservare come SDV usa i valori di queste variabili per valutare le espressioni usate nel file delle regole (*.slic).

La schermata seguente della pagina del Report di Verifier Driver Statico mostra come i test SDV indicano se il driver aveva precedentemente acquisito uno spinlock. SDV verifica se il driver aveva 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, a indicare che il blocco viene acquisito.

Screenshot di una pagina del Rapporto di Verifica Driver Statici che mostra i test SDV per uno spinlock 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 di un difetto è lungo e complesso, spesso è utile scorrere verso il basso nel riquadro Albero di Trace fino a trovare la routine ABORT e quindi usare il tasto FRECCIA SU per trovare il codice che ha subito attivato il report di difetto.

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

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

Chiudere il Visualizzatore 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 determinata regola:

  • Scegliere Esci dal menu File.

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

La schermata seguente mostra come chiudere il Visualizzatore difetti.

Screenshot che illustra come chiudere il Visualizzatore difetti per una regola in Static Driver Verifier.