2013-03-25 20 views
7

Sto usando gcov per il test di copertura nella piattaforma macosx. Finisco la configurazione per Xcode dal set:C'è comunque un modo per unire due file gcov in uno

1. Build Settings ==> Generate Test Coverage Files == Yes 
2. Build Settings ==> Instrument Progaram Flow == Yes 
3. Build Phases ==> Link Binary with library ==> add "libprofile_rt.dylib" 

quindi generare il file "Test.d, Test.dia, Test.gcno, Test.gcda, Test.o" allora io uso gcov-4.2 -b Test.gcno comando per generare il file Test.m.gcov (questo è quello che voglio), ma la prossima volta quando ho eseguito i test di nuovo, i file "Test.d, Test.dia, Test.gcno, Test.gcda, Test.o" verranno generati nuovamente e i dati verranno ripristinati.

Così ho due domande:

  1. Esiste un modo per me di rendere i dati in questi file di copertura accumulati in modo che io possa correre così tante volte di mio progetto e quindi generare i file alla fine.
  2. Se il n. 1 è senza speranza, potresti dirmi come creare i file merge two Test.gcno (generati da due volte in esecuzione) in uno. Provo gcov nel terminale, di seguito sono le opzioni per il comando gcov:

    gcov-4.2 -help 
    Usage: gcov [OPTION]... SOURCEFILE 
    
    Print code coverage information. 
    
        -h, --help      Print this help, then exit 
        -v, --version     Print version number, then exit 
        -a, --all-blocks    Show information for every basic block 
        -b, --branch-probabilities  Include branch probabilities in output 
        -c, --branch-counts    Given counts of branches taken 
                rather than percentages 
        -n, --no-output     Do not create an output file 
        -l, --long-file-names   Use long output file names for included 
                source files 
        -f, --function-summaries  Output summaries for each function 
        -o, --object-directory DIR|FILE Search for object files in DIR or called FILE 
        -p, --preserve-paths   Preserve all pathname components 
        -u, --unconditional-branches Show unconditional branch counts too 
    
    For bug reporting instructions, please see: 
    <URL:http://developer.apple.com/bugreporter>. 
    

Grazie per tutto il vostro aiuto in anticipo

risposta

15

Il flusso di lavoro usuale per gcov è

  1. Compilare e collegare con supporto di copertura (-fprofile-arcs -ftest-coverage)
  2. Esegui i tuoi eseguibili, possibilmente più volte, possibilmente con diversi parametri/set Tings. Questo creerà le informazioni di utilizzo cumulativo nei file .gcda
  3. Invoke gcov per ottenere statistiche di copertura in un formato leggibile (.gcov)

Quindi, fondamentalmente, esecuzioni successive della domanda si tradurrà in statistiche di copertura accumulati. È solo che questi accumuli si svolgeranno nei file .gcda, non nei file .gcov, quindi è necessario eseguire nuovamente gcov ogni volta che si desidera visualizzare le statistiche aggiornate.