Diagnose der statischen Treiberüberprüfung
SDV verfügt über einen Diagnosemodus, der Ihnen und Microsoft bei der Behebung von Problemen helfen kann, die bei SDV auftreten können. Wenn der Diagnosemodus aktiviert ist, protokolliert SDV Meldungen in einer Reihe von Dateien in Ihrem Treiberprojekt, eine pro Verifizierungsstufe und pro Regel.
Freigabe von Diagnosen
Der Diagnosemodus für SDV (auch bekannt als Debugmodus) kann derzeit nur aktiviert werden, wenn er über die Befehlszeile ausgeführt wird. Weitere Einzelheiten zur Ausführung über die Befehlszeile finden Sie unter Static Driver Verifier commands (MSBuild).
Um die Diagnose zu aktivieren, fügen Sie das Flag /debug nach einem Befehl /check hinzu. Zum Beispiel:
msbuild /t:sdv /p:Inputs="/check:* /debug" mydriver.VcxProj /p:Configuration="Release" /p:Platform=x64
Die Aktivierung von Diagnosen führt zu deutlich mehr Ausgaben im Befehlsfenster sowie zur Erstellung spezifischer Protokolldateien.
Diagnostik verstehen
SDV erstellt in jeder Ausführungsphase mehrere Dateien, die Einzelheiten zu dem jeweiligen Schritt enthalten. Wenn SDV bei einem Teil der Ausführung fehlschlägt, werden keine Diagnosedateien für spätere Phasen erstellt.
Die erstellten Dateien sind in dieser Reihenfolge:
smvexecute-NormalBuild.log: Diese befindet sich im Quellverzeichnis Ihres Treibers und zeigt die Ausgabe des ersten Versuchs von SDV, den Treiber ohne zusätzliche Instrumentierung und Analyse zu erstellen.
smvexecute-InterceptedBuild.log: Diese befindet sich im Quellverzeichnis Ihres Treibers und zeigt die Ausgabe von SDV, die den Treiber mit hinzugefügten Analyse-Hooks erstellt.
smvcl.log: Diese befindet sich im Verzeichnis "sdv", das von SDV in Ihrem Treiberprojekt erstellt wurde. Es zeigt die Compiler-Ausgabe des InterceptedBuild-Schrittes. Wenn Sie einen Fehler in smvexecute-InterceptedBuild.log sehen, können Sie möglicherweise zusätzliche Details in smvcl.log finden.
smvexecute-Scan.log: Diese befindet sich im Verzeichnis "sdv", das von SDV in Ihrem Treiberprojekt erstellt wurde. Es zeigt die Ergebnisse des Versuchs von SDV, den Treiber zu scannen, um Einstiegspunkte zu finden. Ein Fehler an dieser Stelle kann darauf hinweisen, dass keine Einstiegspunkte gefunden wurden und Sie Ihre Funktion roletypes oder sdv-map.h aktualisieren sollten. Weitere Informationen finden Sie unter Using Function Role Type Declarations und Approving the Sdv-map.h File .
smvexecute-FinalCompile.log: Eine dieser Dateien wird für jede von sdv überprüfte Regel erstellt und ist im Unterordner "sdv\check[Regelname]" zu finden, den SDV in Ihrem Treiberprojekt erstellt. Diese Datei zeigt die Ausgabe des Versuchs von SDV, den Treiber mit dem Betriebssystemmodell und der spezifischen Regel zu erstellen.
smvexecute-CheckRule.log: Eine dieser Dateien wird für jede von sdv überprüfte Regel erstellt und ist im Unterordner "sdv\check[Regelname]" zu finden, den SDV in Ihrem Treiberprojekt erstellt. Diese Datei zeigt die Ausgabe des Versuchs von SDV, die angegebene Regel anhand Ihres Treibers zu überprüfen.
In der Befehlsausgabe sollten Sie nach der Datei suchen, die dem fehlgeschlagenen Stage-Listing entspricht. Wenn der Fehler in den Schritten FinalCompile oder CheckRule aufgetreten ist, überprüfen Sie den Ordner für die spezifische Regel, die als fehlgeschlagen aufgeführt ist.