Я пытаюсь получить последовательность строк кода, выполняемых тестовым примером. Используя 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
тело цикла будет повторяться дважды, где ветвь true
if
выполняется на первой итерации, а затем ветвь false
на второй итерации. В этом примере информация о последовательности выполненных строк, которую я хочу получить, будет выглядеть примерно так: ...-8-9-10-11-12-13-14-15-8-9-17-18-19-20-...
.
С Gcov я не могу получить упомянутую выше информацию, потому что файл .gcov
покажет только, что все строки из обеих ветвей выполнены. Я никак не могу выяснить последовательность, выполняются ли сначала строки 10-15 или 17-20.
Есть ли способ получить последовательность выполненных строк с помощью Gcov? Или есть ли альтернативы делать это? Спасибо