c - 解释 gcov 输出以识别基本 block

标签 c gcc gcov

我将 gcov 与手册中的选项 -a (--all-blocks) 一起使用:

When you use the -a option, you will get individual block counts

原始文件:

#include <stdio.h>
#include "file1.h"

int max(int a , int b)
{
  int k = 0;
  if (a > b)
    return a;
  else
    return b;
}

gcov 文件如下:

    -:    0:Source:file1.c
    -:    0:Graph:file1.gcno
    -:    0:Data:file1.gcda
    -:    0:Runs:1
    -:    0:Programs:1
    -:    1:#include <stdio.h>
    -:    2:#include "file1.h"
    -:    3:
    -:    4:int max(int a , int b)
    1:    5:{
    1:    6:  int k = 0;
    1:    7:  if (a > b)
    1:    7-block  0
    1:    8:    return a;
    1:    8-block  0
    -:    9:  else
    1:   10:    return b;
$$$$$:   10-block  0
    1:   10-block  1
    -:   11:}
    -:   12:
    -:   13:

我找不到任何关于 gcov 输出格式的信息。从原始代码中,我可以识别出 3 个基本 block ,但 gcov 只有两个数字,而且在第 10 行中,它识别出两个 block 。

最佳答案

block 号是行的本地。 block 0 on line 7 表示“block 0 of line 7”等。只有当一行有两个或更多 block 时,您才有 block 1,第 10 行就是这种情况.

block 号仅显示在该 block 的最后一行。

因此,您的程序有 4 个 block ,其中两个在第 10 行。

关于c - 解释 gcov 输出以识别基本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18534339/

相关文章:

code-coverage - kcov vs lcov vs 原始性能?

gcov - 在 gcc-8 中使用 lcov

c - 如何修复 "A heap has been corrupted"运行时错误?

c++ - C 无符号 64 位整数的种群计数,最大值为 15

c - C 中的宏扩展

c - GCC - 没有关于带有 -O0 的未初始化数组的警告

c++ - 如何知道 const 数组的大小?

python - 安装 pymix 时出现错误 : command 'gcc' failed with exit status 1,

c++ - AIX 上的 std::locale::operator=(std::locale const&) 崩溃

c++ - 如何忽略 gcov 输出中的头文件?