我已经有了-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在我的程序中运行所有行?