Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
SDV-rapporten är en interaktiv visning av verifieringsresultaten. I det här avsnittet beskrivs hur du använder SDV-rapporten för att hitta ett kodningsfel i drivrutinen. Detaljerad information om rapporten, funktionerna i fönstren och elementen i fönstren finns i Rapporten för kontroll av statisk drivrutin.
Öppna defektvisaren för statisk drivrutinsverifierare
Om SDV rapporterade några "defekter" (regelöverträdelser) i resultatfönstret kan du visa koden som är inblandad i överträdelsen i fönstret Defekt visningsprogram i rapporten för kontroll av statiska drivrutiner. Fönstret Defektvy visar koden som leder till regelöverträdelsen. Det finns ett defektfönster för varje regel som har brutits mot (du kan bara visa ett defektfönster åt gången).
Så här öppnar du fönstret Defektvisaren för en felrapport:
- Välj en regel i listan under noden Defekter .
Den här proceduren fungerar endast för defekter. SDV genererar inte ett Fönster för defekt visning om resultatet av en verifiering inte är defekter, till exempel pass, timeouts, blanksteg, inte tillämpligt eller något annat resultat som inte är defekt.
Följande skärmbild visar en rapportsida för statisk drivrutinsverifierare.
Granska regeln
Innan du försöker hitta regelöverträdelsen i koden bör du bekanta dig med de regler som drivrutinen bröt mot.
Avsnittet Regler för kontroll av statiska drivrutiner innehåller ett avsnitt som förklarar varje regel, till exempel CancelSpinLock.
Om du vill se koden för regeln klickar du på fliken med regelkoden i rutan Källkod i rapporten Statisk drivrutinsverifierare, till exempel CancelSpinLock.slic.
Till exempel överträds CancelSpinLock-regeln om drivrutinen anropar IoAcquireCancelSpinLock eller IoReleaseCancelSpinLock ur ordning, eller om drivrutinen avslutar rutinen innan spinnlåset släpps.
Spåra defektvägen
När fönstret Defekt visning öppnas markeras elementet i fönstret Spårningsträd som representerar det första kritiska drivrutinsanropet i felsökvägen. I fönstret Källkod är den associerade raden med källkod markerad i blått.
Följande skärmbild visar öppningsvyn för fönstret Defektvisare för Statisk Drivrutinsverifierare för ett brott mot CancelSpinLock-regeln av exempeldrivrutinen Fail_Driver1. I det här exemplet är det första drivrutinsanropet i sökvägen till en överträdelse av CancelSpinLock-regeln ett anrop till IoAcquireCancelSpinLock i drivrutinens DispatchSystemControl-rutin .
Använd källkodsfönstret
I fönstret Källkod visas de källfiler som används i verifieringen. När ett element i fönstret Spårningsträd har valts visas den källkodsfil som är associerad med elementet överst i filstacken i det intilliggande fönstret Källkod . Om du vill se en annan källfil klickar du på fliken för källfilen i fönstret Källkod .
Följande skärmbild visar rutan Källkod. I det här källkodsfönstret är de kodrader som är markerade i ljusblå de som är associerade med det valda elementet i fönstret Spårningsträd .
Raderna i drivrutinskoden som körs i sökvägen till felet visas med röd text. Genom att bara titta på rader med röd text, till exempel rad 116 och 118 i det här exemplet, kan du ibland se defekten, särskilt en enkel defekt som den som används i det här exemplet. I det här fallet förvärvar drivrutinen spinnlåset och återgår sedan från sändningsrutinen utan att släppa spinnlåset.
Stega igenom spårningen
Börja spåra genom att välja ett element i fönstret Spårningsträd och sedan trycka på NEDPIL. Varje gång du trycker på NEDÅTPIL markeras nästa objekt i fönstret Spårningsträd.
När du går igenom elementen i fönstret Spårningsträd tittar du på rutan Källkod för element från drivrutinskoden. Om du vill expandera ett komprimerat kodavsnitt trycker du på HÖGERPIL. Om du vill dölja ett expanderat kodavsnitt trycker du på vänsterpil. Markören hoppar över alla komprimerade kodavsnitt.
När du bläddrar nedåt genom elementen i fönstret Spårningsträd flyttas källkodsfilen där det valda elementet kommer från överst i stacken med filer i fönstret Källkod och den associerade kodraden markeras.
Följande skärmbild visar Statisk Driver Verifier Felvisare med Spårträdet och Källkods fönsterrutorna.
Använd regelfilen och tillståndspanelen
Du kan använda tillståndsfönstret för att visa uppsättningen booleska uttryck som representerar värdena för variabler som SDV spårar under verifieringen.
De booleska uttryck som visas i fönstret Tillstånd är uttrycken i den uppsättningen som utvärderas till TRUE. Om elementet i fönstret Spårningsträd ändrar värdet för ett uttryck ändras innehållet i fönstret Tillstånd för att visa den nya uppsättningen uttryck som utvärderas till TRUE.
När du går igenom fönstret Spårningsträd kan du se hur SDV använder värdena för dessa variabler för att utvärdera de uttryck som används i regelfilen (*.slic).
Följande skärmbild av rapportsidan för statisk drivrutinsverifieringsrapport visar hur SDV-tester anger om drivrutinen tidigare hade förvärvat ett spinnlås. SDV testar för att se om drivrutinen tidigare har skaffat ett spinnlås, det vill säga om värdet på variabeln s är 1, vilket betyder låst. I det här fallet s!=1 (olåst), som visas i fönstret Tillstånd, så anger SDV värdet för s till 1, vilket indikerar att låset hämtas.
Hitta ABORT-rutinen
När drivrutinskoden bryter mot en regel innehåller fönstret Spårningsträd en ABORT-rutin för att rapportera felet.
När kodsökvägen till en defekt är lång och komplex är det ofta användbart att rulla nedåt i fönstret Spårningsträd tills du hittar ABORT-rutinen och sedan använda UPPÅTPIL-tangenten för att hitta den kod som mest omedelbart utlöste defektrapporten.
Som du ser i följande skärmbild associeras till exempel ABORT-rutinen med en rad från filen CancelSpinLock.slic som rapporterar defekten efter att ha testat om låset har hämtats (s==låst). Testet är en del av en subrutin som utförs när sändningsrutinen slutar. Med den här informationen kan du dra slutsatsen att föraren misslyckades med att släppa ett spinnlås innan den återvände från dispatchrutinen.
Stäng felgranskningsverktyget för statisk drivrutinsverifierare
När du har identifierat kodfelet som orsakade defekten kan du stänga defektvyn för statisk drivrutinsverifierare för den aktuella regeln och sedan öppna defektvyn för en annan regel.
Stäng Felvisaren för en regel:
- På menyn Arkiv väljer du Avsluta.
Du kan också klicka på knappen Stäng (X) för Defektvisare. Den finns precis under knappen Stäng (X) för rapporten för statisk drivrutinsverifierare.
Följande skärmbild visar hur du stänger Defektvisaren.