【发布时间】:2016-09-07 11:24:53
【问题描述】:
我正在用 C++ 编写一些测试,并且正在使用 gcov(实际上是 lcov,但我认为这不是重点)来获取有关覆盖率的信息。
有没有办法在运行时禁用信息记录? 例如。 :
bool myTest() {
ObjectToTest obj;
/* Enable gcov... */
obj.FunctionToTest();
/* ...Disable gcov */
if(obj.GetStatus() != WHATEVER)
return false;
else
return true;
}
在这种情况下,我希望 gcov 仅将 FunctionToTest 显示为“已覆盖”,但将 ObjectToTest 构造函数和 GetStatus 保留为“未覆盖”。
提前致谢!
【问题讨论】:
-
不,这不太可能,因为编译器在编译时生成代码时插入生成数据的指令。一旦检测代码在那里,就不可能禁用它。