靜態驅動程式驗證器診斷
SDV 具有診斷模式,可協助您和 Microsoft 針對 SDV 可能會遇到的問題進行疑難解答。 啟用診斷模式時,SDV 會將訊息記錄到驅動程序專案中的一系列檔案,每個階段的驗證和每個規則各一個。
啟用診斷
SDV 的診斷模式(也稱為偵錯模式)目前只能在從命令行執行時啟用。 如需從命令列執行的詳細資訊,請參閱 靜態驅動程式驗證器命令 (MSBuild) 。
若要啟用診斷,請在 /check 命令之後新增 /debug 旗標。 例如:
msbuild /t:sdv /p:Inputs="/check:* /debug" mydriver.VcxProj /p:Configuration="Release" /p:Platform=x64
啟用診斷會導致命令視窗的輸出明顯增加,以及建立特定記錄檔。
了解診斷
SDV 會在每個執行階段建立數個檔案,以提供該步驟的詳細數據。 當 SDV 在執行中途失敗時,它將不會針對後續階段建立任何診斷檔案。
建立的檔案順序如下:
smvexecute-NormalBuild.log:這位於驅動程式的來源目錄中,並顯示SDV初始嘗試建置驅動程序的輸出,而不需要額外的檢測和分析。
smvexecute-InterceptedBuild.log:這位於驅動程式的來源目錄中,並顯示SDV建置驅動程式並新增分析攔截的輸出。
smvcl.log:這位於 SDV 在驅動程式專案中建立的 「sdv」 目錄中。 它會顯示 InterceptedBuild 步驟的編譯程序輸出。 如果您在smvexecute-InterceptedBuild.log中看到失敗,您可以在smvcl.log中找到其他詳細數據。
smvexecute-Scan.log:這位於 SDV 在驅動程式專案中建立的 「sdv」 目錄中。 它會顯示 SDV 嘗試掃描驅動程式以尋找進入點的輸出。 此處的錯誤可能表示找不到任何進入點,而且您應該更新函式 roletypes 或 sdv-map.h。 如需詳細資訊,請參閱 使用函式角色類型宣告 和 核准 Sdv-map.h 檔案 。
smvexecute-FinalCompile.log:針對 sdv 驗證的每個規則建立下列其中一個檔案,而且可以在驅動程序專案中建立的 “sdv\check[rule name]” 子資料夾 SDV 中找到。 此檔案顯示 SDV 嘗試使用 OS 模型和特定規則建置驅動程式的輸出。
smvexecute-CheckRule.log:其中一個檔案會針對 sdv 驗證的每個規則建立,而且可以在驅動程序專案中建立的 “sdv\check[rule name]” 子資料夾 SDV 中找到。 此檔案會顯示 SDV 嘗試針對驅動程式驗證指定規則的輸出。
您應該在命令輸出中尋找對應至階段清單的檔案,因為檔案失敗。 如果 FinalCompile 或 CheckRule 步驟中發生失敗,請務必檢查列為失敗的特定規則資料夾。