Dit is de opdracht ggcov-run die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
ggcov-run - voer een geïnstrumenteerd testprogramma uit
KORTE INHOUD
ggcov-run [opties] [--] programma argumenten...
PRODUCTBESCHRIJVING
Ggcov-run kan worden gebruikt om een testprogramma uit te voeren, geïnstrumenteerd met behulp van gcc --Dekking wanneer gebouwd,
onder bepaalde omstandigheden. Het gebruik ervan is volledig optioneel, aangezien het standaardgedrag van de
gcc-instrumenten zijn ontworpen om onder de meeste omstandigheden bruikbaar te zijn.
Ggcov-run neemt als argumenten een programma en zijn argumenten, en voert het programma met enkele argumenten uit
gedragsveranderingen (in de vorm van spoor). Als er geen opties worden gegeven, is het programma dat wel
zonder enige wijziging uitgevoerd.
GCDA FILE LOCATIES
Een probleem met het standaardgedrag van de gcc-instrumentatie betreft de locaties
van dekkingsgegevens. Geïnstrumenteerde testprogramma's kunnen lezen, wijzigen en herschrijven .gcda bestanden
wanneer het programma wordt afgesloten. De locaties van die bestanden worden door de compiler gekozen op
compileertijd; de bestanden worden in de build-map naast de overeenkomstige map geplaatst .c
bestand. De compiler slaat deze informatie op in de .o bestand. Als u bijvoorbeeld compileert
het bestand foo.c in de directory /home/mij/software/quuxen vervolgens de padnaam
/home/me/software/quux/foo.gcda is hardgecodeerd in het testprogramma. Natuurlijk, programma's
die dekkingsgegevens onderzoeken, zoals ggcov, zoek het .gcda bestanden daar.
Voor veel testtoepassingen werkt dit prima. Er ontstaan echter problemen wanneer de
geïnstrumenteerd programma moet op een andere machine worden uitgevoerd, of als een ander gebruikers-ID, of de
build directory vluchtig is, of in elk ander testscenario waarbij de build directory
bestaat niet of is niet beschrijfbaar door het lopende testprogramma. In deze gevallen, jij
moet een ad-hocbestand voor en na het testen verplaatsen om het .gcda
bestanden op de juiste locatie op de juiste machine met de juiste machtigingen.
Een betere aanpak is om te gebruiken ggcov-run met de --gcda-voorvoegsel keuze. Deze optie duurt als
een waarde een map die wordt voorafgegaan door de padnaam van elke map .gcda het testprogramma opslaan
toegangen. Dus, als we het bovenstaande voorbeeld voortzetten, voer het testprogramma als volgt uit:
me$ ggcov-run --gcda-prefix=/tmp/gcda ./testprogram test-args...
zal resulteren in een .gcda bestand waarnaar wordt geschreven /tmp/gcda/home/me/software/quux/foo.gcda.
De directorystructuur wordt automatisch aangemaakt als de .gcda bestanden worden geschreven, en de
bestands- en maprechten geven leestoegang voor alle gebruikers.
Merk op dat ggcov ook een --gcda-voorvoegsel optie waarnaar kan worden gezocht .gcda
bestanden op andere locaties dan de build-map. In ons voorbeeld:
me$ cd /home/me/software/quux
me$ ggcov --gcda-prefix=/tmp/gcda -r .
OPTIES
-p dir, --gcda-voorvoegsel=dir
Zorg ervoor dat het testprogramma, en alle onderliggende processen die het uitvoert, elk absoluut programma omleidt
bestandsnaam eindigend op .gcda naar een bestandsnaam onder de map dir.
WAARSCHUWINGEN
Ggcov-run maakt gebruik van een gedeelde bibliotheekshim en de LD_PRELOAD kenmerk van de runtime linker to
bepaalde bibliotheekoproepen onderscheppen door het geïnstrumenteerde programma. Voor een zeer goede beveiliging
redenen, LD_PRELOAD is uitgeschakeld voor setuid- of setgid-programma's. Dus als uw testprogramma
berust op vastberaden gedrag, ggcov-run zal niet werken. Een mogelijke oplossing is het gebruik van
sudo or su om de gebruikersnaam te wijzigen voordat u deze gebruikt ggcov-run, In deze trant:
me$ sudo -u andere gebruiker ggcov-run --gcda-prefix=/foo ./testprogram
Gebruik ggcov-run online met behulp van onworks.net-services