静态驱动程序验证器诊断

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[规则名称]”子文件夹中找到。 此文件显示 SDV 尝试使用 OS 模型和特定规则生成驱动程序的输出。

  • smvexecute-CheckRule.log:为 sdv 验证的每个规则创建其中一个文件,可在驱动程序项目中创建的“sdv\check[规则名称]”子文件夹中找到。 此文件显示 SDV 尝试针对驱动程序验证指定规则的输出。

应该查找命令输出中标记为失败的阶段对应的文件。 如果 FinalCompileCheckRule 步骤中发生失败,请务必检查列为失败的特定规则的文件夹。