Я начал использовать Gcov для анализа моих программ на C. Поэтому во введении документации GCov я читал: «потому что gcov накапливает статистику по строке (при самом низком разрешении), он лучше всего работает с стилем программирования, который помещает только одну инструкцию в каждую строку». Как я могу избежать ограничений GCov на стиль кодирования?
Написал тривиальные программы, я заметил проблемы при вычислении количества раз, когда выполняется инструкция, содержащаяся в предложении «for».
Я собираюсь показать вам два примера и выход GCov из них:
-: 0:Source:example1.c
-: 0:Graph:example1.gcno
-: 0:Data:example1.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:#include <stdio.h>
-: 2:#include <stdlib.h>
-: 3:
-: 4:
1: 5:int main()
-: 6:{
1: 7: int i = 0;
-: 8:
1: 9: for(; i < 4; i++);
-: 10:
1: 11: return 0;
-: 12:}
-: 13:
GCov подсчитывает для статьи в качестве единственного элемента. Это не так? Как рассказал документации GCov рассчитывает правильно количество раз, что заявления в течение п выполняются, если я поставлю их на одной линии, как в этом примере:
-: 0:Source:example1.c
-: 0:Graph:example1.gcno
-: 0:Data:example1.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:
-: 2:#include <stdio.h>
-: 3:#include <stdlib.h>
-: 4:
-: 5:
1: 6:int main()
-: 7:{
1: 8: int i = 0;
-: 9:
6: 10: for(;
-: 11: i < 4;
4: 12: i++);
-: 13:
1: 14: return 0;
-: 15:}
-: 16:
Мы что (я = 0) выполняется 1 время, (i < 4) 5 раз и (i ++) 4 раза. Это правильно для меня.
У меня есть два вопроса:
1-я не хочу, чтобы адаптировать свой стиль кодирования, чтобы сделать статистику с GCov. Есть ли много инструментов или флагов, которые преобразуют мой код в правильном формате, чтобы получить правильную статистику с GCov?
2 Существуют ли другие конструкции, которые имеют одинаковую проблему для цикла «для»?
Заранее благодарим за ответы.
Извините за поздний ответ. Но я еще не убежден. GCov считает, что «для» написано на вашем пути как уникальный оператор. Я получаю 5 от профилирования. – vnzstc