我使用Bullseye进行代码覆盖测试和一些C代码 . 我成功地用Bullseye检测了我的c代码 . 然后我试着拆开它,看看那里有什么 .
我期待在 every control transfer location
插入一些探针功能 . 如 for
, if
, while
等 . 但令我惊讶的是,我只看到 a single probe at the the beginning of each of my functions
. 比如这一个:
那么这个单一探针如何跟踪所有控制转移?
当我查看收集的覆盖数据时,我的所有控制转移都被记录为未覆盖 . 只有函数入口点被视为已覆盖 .
我错误配置了Bullseye所以上面的截图只是粗略的 function coverage
?如果是这样,我如何配置Bullseye用于基于细粒度控制转移的覆盖?
1 回答
好的,我明白了 .
检测代码如下所示:
...
基本上,它分别在
.covconst
和.covbss
段中存储了一些coverage数据收集器对象cov_c_xxx
和cov_v_xxx
. 在运行时,已检测的代码日志数据指向cov_v_xxx
对象 .函数入口处的
cov_probe_v11
只是将cov_c_xxx
和cov_v_xxx
链接到最终结果链接列表中 .cov_probe_v11
是Bullseye运行时库的一部分 . 您可以对其进行修改以适应您测试的代码 .Once linked ,所有其他数据集合都可以在不需要调用
cov_probe_v11
的情况下进行 .