Ricerca…


Osservazioni

GCC fornisce qui la documentazione di gcov

Gcovr e Lcov possono essere utilizzati per aiutare a generare e riepilogare i risultati della copertura

introduzione

La copertura del codice è una misura utilizzata per la frequenza con cui vengono eseguite ciascuna istruzione e ramo del codice sorgente. Questa misura è solitamente richiesta quando si esegue una suite di test per garantire che la maggior parte del codice sia testata dalla suite di test. Può anche essere usato durante la profilazione per determinare gli hot spot del codice e quindi dove gli sforzi di ottimizzazione possono avere il massimo effetto.

Nella copertura del codice GCC viene fornita dall'utilità gcov. gcov funziona solo con codice compilato con gcc con flag particolari. Ci sono pochissimi altri compilatori con cui gcov funziona affatto.

Compilazione

Prima di usare gcov, il codice sorgente dovrebbe essere compilato con gcc usando i due flag, -fprofile-arcs e -ftest-coverage . Questo dice al compilatore di generare le informazioni e il codice del file oggetto aggiuntivo richiesto da gcov.

gcc -fprofile-arcs -ftest-coverage hello.c

Il collegamento dovrebbe anche usare il -fprofile-arcs .

Genera uscita

Per generare le informazioni sulla copertura, è necessario eseguire il programma compilato. Quando si crea la copertura del codice per una suite di test, questa fase di esecuzione verrà normalmente eseguita dalla suite di test in modo che la copertura mostri quali parti del programma vengono eseguite e quali no.

$ a.out

L'esecuzione del programma causerà la .gcda un file .gcda nella stessa directory del file oggetto.

Successivamente puoi chiamare gcov con il nome del file sorgente del programma come argomento per produrre un elenco del codice con frequenza di esecuzione per ogni riga.

$ gcov hello.c
File 'hello.c'
Lines executed:90.00% of 10
Creating 'hello.c.gcov'

Il risultato è contenuto in un file .gcov . Ecco un esempio:

         -:    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:}

Qui puoi vedere i numeri di riga e la fonte e il numero di volte in cui ogni riga è stata eseguita. Se una linea non è stata eseguita, è contrassegnata con ##### .

I conteggi delle esecuzioni sono cumulativi. Se il programma di esempio è stato eseguito nuovamente senza rimuovere il file .gcda, il conteggio per il numero di volte in cui ogni riga nella sorgente è stata eseguita verrà aggiunto ai risultati della corsa precedente.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow