San*_*rez 6 gcc branch code-coverage g++ gcov
当gcc 4.1(使用gcov)下一行时:
p =新班级;
报告为100%分支覆盖< - 这对我来说没问题.
为什么使用gcc 4.4及更高版本的同一行报告为:
[+ - ] p =新班级; (50%分支机构覆盖率)...... < - 这是覆盖100%的问题!
我可以为较新的gcc版本设置任何额外的选项,以便将单行的gcc 4.1报告为相同的分支覆盖率为"p = new Class;".
提前致谢.
解决了 !
我们有一些带或不带异常处理的 C/C++ 文件,因此 lcov/gcov 为每个代码块处理“异常处理”。
在普通块内,例如:
int main(void)
{
...
...
[+ -] printf("Hello\n");
...
}
Run Code Online (Sandbox Code Playgroud)
gcov 报告 printf 行的“分支覆盖率”为 50% ---> 为什么?
因为异常处理已启用!
为了解决这个问题,指定:
-fno-例外
在 g++ 命令行中。
例子:
g++ -O0 --覆盖-fno-例外-fno-内联 ....
谢谢 !