gpt4 book ai didi

gcc - 为什么 gcc 4.1 + gcov 报告 100% 的分支覆盖率和更新的(4.4、4.6、4.8)报告 "p = new class;"行的 50%?

转载 作者:行者123 更新时间:2023-12-04 15:22:35 28 4
gpt4 key购买 nike

当 gcc 4.1(使用 gcov)下一行:

p = 新类;

报告为 100% 分支覆盖率 <-- 这对我来说没问题。

为什么使用 gcc 4.4 和更高版本的同一行报告为:

[+ -] p = 新类; (50% 的分支覆盖率)... <-- 这是覆盖 100% 的问题!!!

我可以为较新的 gcc 版本设置任何额外的选项,以便将单行的分支覆盖率与 gcc 4.1 报告为“p = new Class;”。

提前致谢。

最佳答案

解决了 !

我们有一些带有和不带有异常处理的 C/C++ 文件,因此 lcov/gcov 为每个代码块处理“异常处理”。

在普通 block 内,例如:

int main(void)
{
...
...
[+ -] printf("Hello\n");
...
}

gcov 报告 printf 行的“分支覆盖率”为 50% ---> 为什么?

因为启用了异常处理!!!

为了解决此问题,请指定:

-fno-exceptions



在 g++ 命令行中。

例子:

g++ -O0 --coverage -fno-exceptions -fno-inline ....



谢谢 !

关于gcc - 为什么 gcc 4.1 + gcov 报告 100% 的分支覆盖率和更新的(4.4、4.6、4.8)报告 "p = new class;"行的 50%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219614/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com