我了解两个编译器标志:需要传递-ftest-coverage -fprofile-arcs才能获取 GCC 中的代码覆盖率。我的问题是,使用 2 个编译器标志来获取覆盖率的原因是什么。另外,如果我们独立使用它们,我们能得到什么?
我尝试仅使用 -fprofile-arcs 标志编译 ac 程序。我没有注意到任何差异。能够生成 .gcno .gcda 和 gcov 文件
是否也可以通过 ctags 获取函数结束行号
"ctags -x --c-kinds=f filename.c"
Run Code Online (Sandbox Code Playgroud)
上面的命令列出了函数定义的起始行号。想要一种获取函数结束行号的方法。
其他方法:
awk 'NR > first && /^}$/ { print NR; exit }' first=$FIRST_LINE filename.c
Run Code Online (Sandbox Code Playgroud)
这需要正确格式化代码
示例:文件名.c
1 #include<stdio.h>
2 #include<stdlib.h>
3 int main()
4 {
5 const char *name;
6
7 int a=0
8 printf("name");
9 printf("sssss: %s",name);
10
11 return 0;
12 }
13
14 void code()
15 {
16 printf("Code \n");
17 }
18
19 int code2()
20 {
21 printf("code2 \n");
22 return 1
23 }
24
Run Code Online (Sandbox Code Playgroud)
输入:文件名和函数起始行号。
Example: …Run Code Online (Sandbox Code Playgroud)