共用方式為


靜態驅動程式驗證器診斷

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 在驅動程式專案中建立的 「sdv\check[規則名稱]」子資料夾中找到。 此檔案顯示 SDV 嘗試使用 OS 模型和特定規則建置驅動程式的輸出。

  • smvexecute-CheckRule.log:其中一個檔案會針對 sdv 所驗證的每個規則建立,而且可以在 SDV 在驅動程式專案中建立的 「sdv\check[規則名稱]」子資料夾中找到。 此檔案顯示 SDV 嘗試針對驅動程式驗證指定規則的輸出。

您應該在命令輸出中尋找與失敗的階段清單相對應的檔案。 如果失敗發生在 FinalCompileCheckRule 步驟中,請務必檢查資料夾中列出為失敗的特定規則。