gcc
Zakres kodu: gcov
Szukaj…
Uwagi
GCC udostępnia tutaj dokumentację gcov
Gcovr i Lcov mogą być używane do generowania i podsumowywania wyników pokrycia
Wprowadzenie
Pokrycie kodu jest miarą stosowaną do częstotliwości wykonywania każdej instrukcji kodu źródłowego i gałęzi. Środek ten jest zwykle wymagany podczas uruchamiania zestawu testów, aby zapewnić, że jak najwięcej kodu jest testowane przez zestaw testów. Można go również użyć podczas profilowania w celu ustalenia punktów krytycznych kodu, a zatem tam, gdzie optymalizacja może mieć największy wpływ.
W kodzie GCC zasięg zapewnia narzędzie gcov. gcov działa tylko z kodem skompilowanym z gcc z określonymi flagami. Istnieje bardzo niewiele innych kompilatorów, z którymi gcov w ogóle działa.
Kompilacja
Przed użyciem gcov kod źródłowy powinien zostać skompilowany z gcc przy użyciu dwóch flag, -fprofile-arcs i -ftest-coverage . Mówi to kompilatorowi, aby wygenerował informacje i kod dodatkowego pliku obiektowego wymagany przez gcov.
gcc -fprofile-arcs -ftest-coverage hello.c
Łączenie powinno również używać flagi -fprofile-arcs .
Generuj dane wyjściowe
Aby wygenerować informacje o zasięgu, należy uruchomić skompilowany program. Podczas tworzenia pokrycia kodu dla zestawu testowego ten etap wykonywania będzie zwykle wykonywany przez zestaw testów, aby pokrycie pokazywało, które części programu testy są wykonywane, a które nie.
$ a.out
Uruchomienie programu spowoduje .gcda pliku .gcda w tym samym katalogu, co plik obiektowy.
Następnie możesz wywołać gcov z nazwą pliku źródłowego programu jako argumentem, aby utworzyć listę kodu z częstotliwością wykonywania dla każdej linii.
$ gcov hello.c
File 'hello.c'
Lines executed:90.00% of 10
Creating 'hello.c.gcov'
Wynik jest zawarty w pliku .gcov . Oto próbka:
-: 0:Source:hello.c
-: 0:Graph:hello.gcno
-: 0:Data:hello.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:#include <stdio.h>
-: 2:
-: 3:int main (void)
1: 4:{
1: 5: int i;
-: 6:
1: 7: i = 0;
-: 8:
-: 9:
1: 10: if (i != 0)
#####: 11: printf ("Goodbye!\n");
-: 12: else
1: 13: printf ("Hello\n");
1: 14: return 0;
-: 15:}
Tutaj możesz zobaczyć numery linii i źródła oraz liczbę wykonań każdej linii. Jeśli linia nie została wykonana, jest oznaczona ##### .
Liczby wykonania są kumulatywne. Jeśli przykładowy program zostałby wykonany ponownie bez usuwania pliku .gcda, liczba razy, ile razy każda linia w źródle została wykonana, zostałaby dodana do wyników poprzedniego uruchomienia.