我将 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/