如何阻止GCC优化断言

时间:2015-11-06 14:29:17

标签: unit-testing gcc gcov

我已经有了-O0

我在我的代码上运行单元测试(与cunit类似的想法)。该代码是使用IAR的EWARM构建的,但我使用GCC(版本4.5.4,mingw-w64 / oz)和gcov来验证我的单元测试的覆盖范围。

(为什么这么老的版本?我遇到了一个没有在Windows 7上崩溃的问题;当我拿到一个时,我一直坚持下去。)

以下是GCOV输出的摘录:

    2:  926:Boolean PtpTimeZero(const TPtpTime *t)
    6:  927:{
    -:  928:  Boolean result;
    -:  929:
#####:  930:  assert(t != NULL);
    2:  931:  assert(t->nanoseconds > -ONENANO);
    2:  932:  assert(t->nanoseconds <  ONENANO);
    -:  933:
    2:  934:  result = (t->seconds == 0U) && (t->nanoseconds == 0);
    2:  935:  return result;
    -:  936:}

GCOV没有看到第930行被执行,所以我的单元测试覆盖率没有达到100%,这是不好的。在运行之前和之后的行,所以我认为第930行正在优化。

我试图找到如何关闭所有优化,但即使优化设置为0也会发生这种情况。

如何让GCC在我的程序中运行所有行?

0 个答案:

没有答案