【发布时间】:2018-10-10 03:45:30
【问题描述】:
我正在尝试获取测试用例执行的代码行序列。通过使用 Gcov,输出 .gcov 文件显示执行了哪一行代码以及执行了多少次,但没有关于序列的信息。
问题是我无法获得执行行的顺序。我们以这个程序为例:
//...
for(i = 0; i < n; i++) { // line 8
if(a > b) { // line 9
// do something (line 10 - 15)
} else { // line 16
// do something (line 17 - 20)
}
}
//...
例如输入x,循环体将被迭代两次,其中if 的true 分支在第一次迭代中执行,然后false 分支在第二次迭代中执行。在这个例子中,我想要获取的关于执行行序列的信息类似于...-8-9-10-11-12-13-14-15-8-9-17-18-19-20-...。
使用 Gcov,我无法获得上述信息,因为 .gcov 文件只会显示两个分支中的所有行都已执行。我无法弄清楚是先执行第 10-15 行还是第 17-20 行的顺序。
有没有办法用 Gcov 获取执行行的顺序?或者有没有其他方法可以做到这一点?谢谢
【问题讨论】: