如果测试运行是不定式的,或者测试运行时间很长,并且我想获得临时结果,那么如何获得.gcda (gcov)/覆盖率?例如,我对执行1分钟后的测试覆盖率感兴趣。
gcc -I${PWD} -fprofile-arcs -O0 --coverage program.c -o test-coverage $ ./test-coverage Terminated: 15
如果我终止进程,那么就不会创建.gcda。是否有任何方法在进程终止之前恢复或获取临时值?
发布于 2022-10-14 06:47:28
您需要修改程序,以便刷新覆盖数据。
下面是gcc编译器和gcov。
// Reference: https://gcc.gnu.org/onlinedocs/gcc/Gcov-and-Optimization.html
// pre 11 gcc : extern "C" void __gcov_flush(void);
extern "C" void __gcov_dump(void);
[[noreturn]] void terminateHandler()
{
__gcov_dump();
std::abort();
}在main()中
std::set_terminate(&terminateHandler);考虑到您必须为覆盖率构建,您可以有条件地编译上述代码。
您可能还需要链接到gcov库。
https://stackoverflow.com/questions/68550611
复制相似问题