gcov 中的“程序”标题行是什么意思

问题描述

当我运行一次单元测试可执行文件时,我习惯于在 GCOV 文件中看到这些标题行:

        -:    0:Source:../../src/file1.c
        -:    0:Graph:build/file1.gcno
        -:    0:Data:build/file1.gcda
        -:    0:Runs:1
        -:    0:Programs:1

但是,有时我会看到如下所示的标题:

        -:    0:Source:../../src/file2.c
        -:    0:Programs:2

我不确定为什么标题看起来不同。两个测试目录/makefile 的设置方式相同。文件 2 的覆盖率数据看起来也完全正确。

具体为什么是“程序:2”?这条线是什么意思?我查看了 man page,但找不到对该标题含义的任何解释。直觉上,我认为这意味着关联的对象被链接到可执行文件两次而不是一次。但事实并非如此,只有一个可执行文件,而且只运行一次。

编辑:我使用的是 gcov 7.5.0。

解决方法

gcov 7.5.0 的来源是 here

下面的代码段显示了打印标题的位置。 File2 恰好位于包含多个源文件的目录中。因此,图表、数据和运行标题被省略。

File: gcov.c
2506:   fprintf (gcov_file,"%9s:%5d:Source:%s\n","-",src->coverage.name);
2507:   if (!multiple_files)
2508:     {
2509:       fprintf (gcov_file,"%9s:%5d:Graph:%s\n",bbg_file_name);
2510:       fprintf (gcov_file,"%9s:%5d:Data:%s\n",2511:          no_data_file ? "-" : da_file_name);
2512:       fprintf (gcov_file,"%9s:%5d:Runs:%u\n",object_runs);
2513:     }
2514:   fprintf (gcov_file,"%9s:%5d:Programs:%u\n",program_count);
2515: 

program_count 在第 1570 行递增。我假设这会发生两次,因为有两个数据文件。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...