设置Windows内核驱动程序覆盖率

本节介绍了如何设置Coco以在Windows内核驱动程序中测量代码覆盖率。此设置在使用内核模式驱动程序框架(KMDF)和目标机器为Hyper-V虚拟机时进行了测试。

创建选项文件

在此示例中,使用--cs-option-file选项很方便,因此不必在Visual Studio选项中将各种Coco参数作为命令行参数给出。有关此选项的更多信息,请参阅杂项。创建一个文本文件并添加以下行

--cs-on
--cs-memory-pool=64000
--cs-architecture=Kernel
--cs-condition
--cs-line
--cs-function
--cs-hit
--cs-coverage-save-function=coverage\_init
--cs-trigger-function=DriverEntry

添加以下行,包含已下载的coverage.h文件的路径

--cs-custom-library-source=Path_to_Coco\samples\windows-kernel-coverage\coverage.h

注意:如果您的驱动程序的DRIVER_INITIALIZE对象仍被命名为DriverEntry,则您无需在上面的参数中做任何更改。否则,您必须将开关--cs-trigger-function=<DriverEntry>重命名为您的驱动程序DRIVER_INITIALIZE对象的名称。

设置您的Visual Studio

将以下行--cs-option-file=<path to option file>添加到Visual Studio设置下的项目设置 > C/C++ > 命令行 > 附加选项项目设置 > 链接器 > 命令行 > 附加选项

<path to option file>更改为指向您前面创建的Coco选项文件。

使用控制台应用程序cocodump

使用Visual Studio在发布配置下构建控制台应用程序cocodump.exe(位于%SQUISHCOCO%\samples\windows-kernel-coverage),并将其传输到目标机器。

cocodump.exe可执行文件必须在管理员权限下执行。cocodump.exe工具的使用方法如下

cocodump.exe <驱动程序名称> <输出文件>

安装驱动程序后,您可以在目标机器上运行此应用程序。

注意:为了确认覆盖率工具正在工作,请使用winobj工具,验证在Device/??/文件夹中是否存在名为coco-<drivername>的元素。

使用带有您的驱动程序名称的cocodump.exe应用程序。

例如,要将名为mydriver的驱动程序的执行数据转储到文件C:\mydriver.csexe,您需要调用

cocodump.exe mydriver "C:\mydriver.csexe"

确认文件已创建,并用CoverageBrowser将其导入项目中主.csmes文件。

检查cocodump.exe工具的命令行输出,是否有错误信息。

如果您有进一步的问题或问题,请联系froglogic支持。

Coco v7.2.0©2024 The Qt Company Ltd。
Qt及其相关标志是The Qt Company Ltd.在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。