程序代码覆盖率分析

更新时间:
2024-04-25
下载文档

程序代码覆盖率分析

程序代码覆盖率分析主要分为以下几步:

  1. 右击需要分析的工程,选择菜单 Properties ,选择 SylixOS Project 下的 Compiler Setting ,在弹出的窗口中勾选 Enable gcov(Code coverage analysis)OK 保存设置,如下图所示。

  2. 编译程序,在工程编译输出目录的 obj 文件夹下会为被编译的每个源文件生成 源文件名 .o源文件名 .gcno 文件,如下图所示。

  3. 上传应用程序可执行文件(本例为 app_demo )到目标设备并执行文件,程序退出后在可执行文件同级目录下会生成 obj 目录,该目录中保存了每个源文件在程序执行后生成的 源文件名 .gcda 文件,如下图所示。

  4. 右击需要分析的工程,选择 SylixOS Coverage Analysis > Show Coverage Rate 。至此,每个源文件在程序工程编译输出目录下的 obj 文件夹中存在三个与之对应的文件,即: 源文件名 .o源文件名 .gcno源文件名 .gcda 。在 gcov 标签页中可查看源文件代码覆盖率,双击列表中的行可定位到源代码,同时在源码文件中以不同的颜色标识各行代码的执行次数。选中列表中的 app_demo.c 一行,单击,选择 Bar graph ,可以`更直观的查看代码覆盖率分析图,如下图所示。

    说明:
    如果更改了源文件,在第四步中需要先选择 SylixOS Coverage Analysis > Get Coverage Rate File ,再选择 SylixOS Coverage Analysis > Show Coverage Rate

内核模块代码覆盖率分析与应用程序基本一致,不一样的是内核模块不能像 APP 程序那样直接被执行,需运行 modulegcov 命令生成 源文件名 .gcda 文件。

其操作流程如下:

  1. 模块中添加如下代码。

    extern void __gcov_flush();
    LW_SYMBOL_EXPORT void module_gcov (void)
    {
        __gcov_flush();
      printk("module_gcov() run!\n");
    }
    
  2. 按照下图设置工程,编译并下载内核模块文件到目标系统,注册模块并执行 modulegcov 命令,生成 源文件名 .gcda 文件,如下图所示。

  3. 右击需要分析的工程,选择 SylixOS Coverage Analysis > Show Coverage Rate 。至此,每个源文件会在程序工程编译输出目录下的 obj 文件夹中都存在三个与之对应的文件,即: 源文件名 .o源文件名 .gcno源文件名 .gcda 。选择过工程目标文件后即可查看代码覆盖率分析结果。在 gcov 标签页中可查看源文件代码覆盖率,双击列表中的行可定位到源代码,同时在源码文件中以不同的颜色标识各行代码的执行次数。选中某一行,单击,选择 Bar graph ,可以更直观的查看代码覆盖率分析图,如下图所示。

文档内容是否对您有所帮助?
有帮助
没帮助