Gcov - Gcov - Wikipedia
Operační systém | Unixový |
---|---|
Typ | Pokrytí kódu |
Licence | GNU General Public License a další licence na bezplatný software[který? ] |
webová stránka | gcc |
Gcov je pokrytí zdrojovým kódem analýza a prohlášení po prohlášení profilování nářadí. Gcov generuje přesné počty, kolikrát je každý příkaz v programu proveden a anotuje zdrojový kód přidat vybavení. Gcov je standardní nástroj s Sbírka překladačů GNU (GCC) sada.[1]
Obslužný program gcov poskytuje informace o tom, jak často a program provádí segmenty kódu.[2] Produkuje kopii zdrojového souboru s poznámkami o frekvencích provádění. Obslužný program gcov neprodukuje žádná časově založená data a funguje pouze na kódu kompilovaném se sadou GCC. Příručka tvrdí, že není kompatibilní s žádným jiným mechanismem profilování nebo pokrytí testu,[3] ale funguje to s llvm - také generované soubory.
Popis
gcov vytváří analýzu pokrytí testů speciálně instrumentovaných program. Možnosti -fprofile-arcs -ftest-coverage
by mělo být použito k sestavení programu pro analýzu pokrytí (první možnost zaznamenat statistiku větví a druhá uložit počet spuštění linky); -fprofile-arcs
by měl být také použit k propojení programu.[2] Po spuštění takový program vytvoří několik souborů s příponami ".bb" ".bbg" a ".da" (přípony), které lze analyzovat pomocí gcov. Bere zdrojové soubory jako argumenty příkazového řádku a vytváří anotovaný seznam zdrojů. Každý řádek zdrojového kódu má předponu, kolikrát byl spuštěn; řádky, které nebyly provedeny, mají předponu „#####“.[2]
gcov vytvoří logfile s názvem sourcefile.gcov což označuje, kolikrát každý řádek zdrojového souboru sourcefile.c provedl. Tento anotovaný zdrojový soubor lze použít s gprof, další nástroj pro profilování, k extrakci časových informací o programu.
Příklad
Následující program, napsaný v Programovací jazyk C., smyčky nad celými čísly 1 až 9 a testuje jejich dělitelnost operátorem modulus (%).
#zahrnout <stdio.h>inthlavní (prázdnota){ int i; pro (i = 1; i < 10; i++) { -li (i % 3 == 0) printf ("% d je dělitelné 3 n", i); -li (i % 11 == 0) printf ("% d je dělitelné 11 n", i); } vrátit se 0;}
Aby bylo možné povolit testování pokrytí, musí být program sestaven s následujícími možnostmi:
$ gcc -Wall -fprofile-arcs -ftest-coverage cov.c
kde cov.c je název programového souboru. Tím se vytvoří instrumentovaný spustitelný který obsahuje další instrukce, které zaznamenávají, kolikrát byl každý řádek programu proveden. Možnost - pokrytí testů přidává instrukce pro počítání počtu provedení jednotlivých řádků, zatímco -fprofile-arcs obsahuje instrumentační kód pro každou větev programu. Přístrojové vybavení pobočky zaznamenává, jak často jsou různé cesty vedeny prostřednictvím příkazů „if“ a dalších podmíněných podmínek. The spustitelný musí být poté spuštěno k vytvoření dat pokrytí. Data z běhu se zapisují do několika souborů s příponami „.bb“ „.bbg“ a „.da“ v aktuálním adresář. Tato data lze analyzovat pomocí příkazu gcov a názvu zdrojového souboru:
$ gcov cov.c 88,89% z 9 zdrojových řádků provedených v souboru cov.cVytváření cov.c.gcov
The gcov příkaz vytvoří anotovanou verzi originálu zdrojový soubor, s příponou souboru „.gcov“, která obsahuje počty počtu spuštění každého řádku:
#zahrnout <stdio.h> int hlavní (prázdnota) { 1 int i; 10 pro (i = 1; i < 10; i++) { 9 -li (i % 3 == 0) 3 printf ("% d je dělitelné 3 n", i); 9 -li (i % 11 == 0)###### printf ("% d je dělitelné 11 n", i); 9 } 1 vrátit se 0; 1 }
Počty řádků lze vidět v prvním sloupci výstupu. Řádky, které nebyly provedeny, jsou označeny hašováním „######“.
Možnosti příkazového řádku
Tato sekce může obsahovat nadměrné množství složitých detailů, které mohou zajímat pouze konkrétní publikum.Říjen 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Obslužný program příkazového řádku Gcov podporuje následující možnosti při generování anotovaných souborů z údajů profilu:[4][5]
- -h (--Pomoc): Zobrazí nápovědu k použití gcov (na standardním výstupu) a ukončí se bez dalšího zpracování.
- -proti (--verze): Zobrazí číslo verze gcov (na standardním výstupu) a ukončí se bez dalšího zpracování.
- -A (--všechny bloky): Napište jednotlivé počty spuštění pro každý základní blok. Normálně se výstupy gcov výstupů počítají pouze pro hlavní bloky linky. Pomocí této možnosti můžete určit, zda se bloky v jednom řádku neprovádějí.
- -b (- oborové pravděpodobnosti): Zapíše frekvence větví do výstupního souboru a zapíše souhrnné informace o větvi na standardní výstup. Tato možnost umožňuje zjistit, jak často byla každá větev ve vašem programu přijata. Nepodmíněné větve se nezobrazí, pokud není zadána volba -u.
- -C (- počty větví): Zapište frekvence větví jako počet přijatých větví, nikoli jako procento přijatých větví.
- -n (--výstup): Nevytvářejte výstupní soubor gcov.
- -l (--long-file-names): Vytvoří dlouhé názvy souborů pro zahrnuté zdrojové soubory. Například pokud soubor záhlaví x.h obsahuje kód a byl zahrnut do souboru a.c, pak spuštěním gcov na souboru a.c bude vytvořen výstupní soubor s názvem a.c ## x.h.gcov místo x.h.gcov. To může být užitečné, pokud je soubor x.h obsažen ve více zdrojových souborech a chcete zobrazit jednotlivé příspěvky. Pokud použijete volbu `-p ', zahrnou i zahrnuty názvy souborů budou úplné názvy cest.
- -p (--zachované cesty): Zachovat úplné informace o cestě ve jménech vygenerovaných souborů .gcov. Bez této možnosti se použije pouze komponenta názvu souboru. S touto volbou se použijí všechny adresáře se znaky `/ 'přeloženými na znaky` #',. komponenty adresáře odstraněny a neodstranitelné .. komponenty přejmenovány na `^ '. To je užitečné, pokud jsou zdrojové soubory v několika různých adresářích.
- -r (- pouze relativní): Pouze výstupní informace o zdrojových souborech s relativním názvem cesty (po vynechání zdrojové předpony). Absolutní cesty jsou obvykle soubory záhlaví systému a pokrytí všech vložených funkcí v nich je obvykle nezajímavé.
- -F (--funkce-souhrny): Výstupní souhrny pro každou funkci kromě souhrnu na úrovni souboru.
- -o adresář | soubor (--objekt-adresář nebo --objekt-soubor): Zadejte buď adresář obsahující datové soubory gcov, nebo název cesty k objektu. Pomocí této možnosti se hledají datové soubory .gcno a .gcda. Pokud je zadán adresář, jsou datové soubory v tomto adresáři a pojmenovány podle názvu vstupního souboru bez jeho přípony. Pokud je zde zadán soubor, jsou datové soubory pojmenovány po tomto souboru bez jeho přípony.
- -s adresář (--source-prefix adresář): Předpona pro názvy zdrojových souborů, která se má odstranit při generování výstupních souborů pokrytí. Tato možnost je užitečná při vytváření v samostatném adresáři a při určování názvů výstupních souborů není požadována cesta ke zdrojovému adresáři. Všimněte si, že tato detekce předpony se použije před určením, zda je zdrojový soubor absolutní.
- -u (- nepodmíněné větve): Pokud jsou uvedeny pravděpodobnosti větví, zahrňte pravděpodobnosti bezpodmínečných větví. Bezpodmínečné větve obvykle nejsou zajímavé.
- -d (--display-progress): Zobrazí průběh na standardním výstupu.
Souhrny pokrytí
Lcov je grafické rozhraní pro gcov. Shromažďuje data gcov pro více zdrojových souborů a vytváří HTML stránky obsahující zdrojový kód s poznámkami s informacemi o pokrytí. Přidává také stránky s přehledem pro snadnou navigaci ve struktuře souborů. Lcov podporuje měření pokrytí příkazů, funkcí a větví.[6] Je tam také Verze pro Windows.
Gcovr poskytuje nástroj pro správu používání gcov a generování souhrnných výsledků pokrytí kódu. Tento příkaz je inspirován balíčkem Python coverage.py, který poskytuje podobný nástroj v Pythonu. Gcovr vytváří buď kompaktní souhrnné zprávy čitelné člověkem, strojově čitelné zprávy XML nebo grafické shrnutí HTML. Zprávy XML generované gcovr mohou být použity Jenkins poskytovat souhrny pokrytí grafickým kódem. Gcovr podporuje měření pokrytí výpisů a poboček[7]
SCov je nástroj, který zpracovává přechodný textový formát generovaný gcov (pomocí gcov -i) ke generování zpráv o pokrytí kódu. Těmito zprávami mohou být jednoduché textové zprávy nebo HTML stránky s podrobnějšími zprávami.[8]
Viz také
- Tcov - nástroj pro pokrytí kódu pro Solaris poskytovaný v sadě Sun Studio
Reference
- ^ "Jak funguje Gcov - nástrojová část GCC" (PDF). Archivovány od originál (PDF) 9. dubna 2014. Citováno 12. února 2012. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ A b C Brian J. Gough. An Introduction to GCC - for the GNU compilers gcc and g ++ - Coverage testing with gcov. Citováno 12. února 2012.
- ^ "stránka gcov man". Citováno 12. února 2012.
- ^ gnu.org. "Možnosti příkazového řádku Gcov". Citováno 11. února 2012.
- ^ linuxové příkazy. "Možnosti příkazového řádku Gcov". Archivovány od originál dne 08.01.2013. Citováno 12. února 2012.
- ^ "Lcov".
- ^ "Gcovr".
- ^ "SCov".