设置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.在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。