次の方法で共有


静的ドライバー検証ツールの診断

SDV には診断モードがあり、SDV で発生する可能性のある問題を Microsoft と共にトラブルシューティングするのに役立ちます。 診断 モードが有効になっている場合、SDV は検証のステージとルールごとに 1 つずつ、ドライバー プロジェクト内の一連のファイルにメッセージを記録します。

診断の有効化

現在、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 が検証するルールごとに 1 つ作成され、SDV によってドライバー プロジェクトに作成された「sdv\check[rule name]」サブフォルダーにあります。 このファイルは、SDV が OS モデルと特定のルールでドライバーをビルドしようとしたときの出力を示しています。

  • smvexecute-CheckRule.log: これらのファイルは、SDV が検証するルールごとに 1 つ作成され、SDV によってドライバー プロジェクトに作成された「sdv\check[rule name]」サブフォルダーにあります。 このファイルには、SDV がドライバーに対して指定されたルールを検証した結果が表示されます。

コマンドの出力から、失敗したステージ リストに対応するファイルを探す必要があります。 FinalCompile または CheckRule ステップでエラーが発生した場合は、失敗として一覧表示された特定のルールのフォルダーを確認してください。