Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
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).
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.
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.
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 .
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."
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.
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.
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.