EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

aarch64-linux-gnu-gcov-4.8 – Online in der Cloud

Führen Sie aarch64-linux-gnu-gcov-4.8 im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl aarch64-linux-gnu-gcov-4.8, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


gcov - Tool zum Testen der Abdeckung

ZUSAMMENFASSUNG


gcov [-v|--Version] [-h|--help]
[-a|--alle-blöcke]
[-b|--branch-wahrscheinlichkeiten]
[-c|--Branchenzählungen]
[-u|--unconditional-branches]
[-n|--keine Leistung]
[-l|--lange-Dateinamen]
[-p|--preserve-pfade]
[-r|--Nur für Verwandte]
[-f|--Funktionszusammenfassungen]
[-o|--Objektverzeichnis Verzeichnis|Datei]
[-s|--source-prefix Verzeichnis]
[-d|--Anzeige-Fortschritt]
Dateien

BESCHREIBUNG


gcov ist ein Testabdeckungsprogramm. Verwenden Sie es zusammen mit GCC, um Ihre Programme zu analysieren, um
Helfen Sie mit, effizienteren, schneller ausgeführten Code zu erstellen und ungetestete Teile Ihres . zu entdecken
Programm. Sie können verwenden gcov als Profiling-Tool, um herauszufinden, wo Ihre Optimierung liegt
Bemühungen wirken sich am besten auf Ihren Code aus. Sie können auch verwenden gcov zusammen mit der anderen Profilierung
Werkzeug, gprof, um zu beurteilen, welche Teile Ihres Codes die meiste Rechenzeit benötigen.

Profiling-Tools helfen Ihnen, die Leistung Ihres Codes zu analysieren. Verwenden eines Profilers wie z gcov
or gprof, können Sie einige grundlegende Leistungsstatistiken abrufen, wie zum Beispiel:

· wie oft jede Codezeile ausgeführt wird

· welche Codezeilen tatsächlich ausgeführt werden

· wie viel Rechenzeit jeder Codeabschnitt verbraucht

Sobald Sie diese Dinge über die Funktionsweise Ihres Codes beim Kompilieren wissen, können Sie sich jeden ansehen
Modul, um zu sehen, welche Module optimiert werden sollen. gcov hilft Ihnen zu bestimmen, wo Sie arbeiten müssen
auf Optimierung.

Softwareentwickler verwenden auch Coverage-Tests in Zusammenarbeit mit Testsuiten, um sicherzustellen, dass
Software ist eigentlich gut genug für ein Release. Testsuites können überprüfen, ob ein Programm
funktioniert wie erwartet; ein Abdeckungsprogramm testet, um zu sehen, wie viel des Programms von ausgeübt wird
die Testsuite. Entwickler können dann bestimmen, welche Arten von Testfällen hinzugefügt werden müssen
die Testsuiten, um sowohl bessere Tests als auch ein besseres Endprodukt zu erstellen.

Sie sollten Ihren Code ohne Optimierung kompilieren, wenn Sie die Verwendung planen gcov weil das
Optimierung durch Kombinieren einiger Codezeilen zu einer Funktion kann Ihnen möglicherweise nicht so viel bringen
Informationen, da Sie nach "Hot Spots" suchen müssen, an denen der Code viel verwendet
Computerzeit. Ebenso, weil gcov akkumuliert Statistiken pro Zeile (am niedrigsten
Auflösung), funktioniert es am besten mit einem Programmierstil, der nur eine Anweisung auf jedem platziert
Leitung. Wenn Sie komplizierte Makros verwenden, die zu Schleifen oder anderen Kontrollstrukturen expandieren,
die Statistiken sind weniger hilfreich --- sie melden nur die Zeile, in der das Makro aufgerufen wird
erscheint. Wenn sich Ihre komplexen Makros wie Funktionen verhalten, können Sie sie durch Inline ersetzen
Funktionen zur Lösung dieses Problems.

gcov erstellt eine Logdatei namens Quelldatei.gcov was angibt, wie oft jede Zeile von
eine Quelldatei Quelldatei.c ausgeführt hat. Sie können diese Logfiles zusammen mit gprof zu
helfen bei der Feinabstimmung der Leistung Ihrer Programme. gprof gibt dir Timing-Informationen
zusammen mit den Informationen verwenden können, die Sie von gcov.

gcov funktioniert nur mit Code, der mit GCC kompiliert wurde. Es ist mit keinem anderen Profiling kompatibel
oder Testabdeckungsmechanismus.

OPTIONAL


-h
--help
Hilfe zur Verwendung anzeigen gcov (auf der Standardausgabe) und beenden, ohne etwas zu tun
weitere Bearbeitung.

-v
--Version
Zeigen Sie die an gcov Versionsnummer (auf der Standardausgabe) und beenden, ohne etwas zu tun
weitere Bearbeitung.

-a
--alle-blöcke
Schreiben Sie individuelle Ausführungszähler für jeden Basisblock. Normalerweise gcov-Ausgänge
Ausführung zählt nur für die Hauptblöcke einer Linie. Mit dieser Option können Sie
bestimmen, ob Blöcke innerhalb einer einzelnen Zeile nicht ausgeführt werden.

-b
--branch-wahrscheinlichkeiten
Verzweigungshäufigkeiten in die Ausgabedatei schreiben und Verzweigungszusammenfassungsinformationen in die
Standardausgabe. Mit dieser Option können Sie sehen, wie oft jede Verzweigung in Ihrem Programm
wurde genommen. Unbedingte Verzweigungen werden nicht angezeigt, es sei denn, die -u Option gegeben ist.

-c
--Branchenzählungen
Schreibe die Verzweigungshäufigkeit als Anzahl der genommenen Verzweigungen und nicht als Prozentsatz
von Zweigen genommen.

-n
--keine Leistung
Erstellen Sie nicht die gcov Ausgabedatei.

-l
--lange-Dateinamen
Erstellen Sie lange Dateinamen für enthaltene Quelldateien. Zum Beispiel, wenn die Header-Datei xh
enthält Code und wurde in die Datei aufgenommen ac, dann läuft gcov in der Datei ac
erzeugt eine Ausgabedatei namens ac##xhgcov statt xhgcov.. Das kann sein
nützlich, wenn xh ist in mehreren Quelldateien enthalten und Sie möchten die Person sehen
Beiträge. Wenn Sie das verwenden -p Option, sowohl die einschließenden als auch die eingeschlossenen Dateinamen
werden vollständige Pfadnamen sein.

-p
--preserve-pfade
Bewahren Sie die vollständigen Pfadinformationen in den Namen der generierten .gcov Dateien. Ohne
Bei dieser Option wird nur die Dateinamenkomponente verwendet. Mit dieser Option werden alle Verzeichnisse
verwendet werden, mit / Zeichen übersetzt in # Figuren, . Verzeichniskomponenten entfernt
und nicht entfernbar .. Komponenten umbenannt in ^. Dies ist nützlich, wenn Quelldateien in
mehrere verschiedene Verzeichnisse.

-r
--Nur für Verwandte
Geben Sie nur Informationen zu Quelldateien mit einem relativen Pfadnamen aus (nach Quelle
Präfix Elision). Absolute Pfade sind normalerweise System-Header-Dateien und die Abdeckung aller
Inline-Funktionen darin sind normalerweise uninteressant.

-f
--Funktionszusammenfassungen
Ausgabezusammenfassungen für jede Funktion zusätzlich zur Zusammenfassung auf Dateiebene.

-o Verzeichnis|Datei
--Objektverzeichnis Verzeichnis
--Objektdatei Datei
Geben Sie entweder das Verzeichnis mit den gcov-Datendateien oder den Objektpfadnamen an.
Das .gcnr und .ggda Datendateien werden mit dieser Option durchsucht. Wenn ein Verzeichnis
angegeben, befinden sich die Datendateien in diesem Verzeichnis und sind nach dem Namen der Eingabedatei benannt.
ohne seine Erweiterung. Wenn hier eine Datei angegeben wird, werden die Datendateien benannt nach
diese Datei ohne Erweiterung.

-s Verzeichnis
--source-prefix Verzeichnis
Ein Präfix für Quelldateinamen, das beim Generieren der Ausgabe-Coverage-Dateien entfernt werden soll.
Diese Option ist nützlich, wenn Sie in einem separaten Verzeichnis erstellen und der Pfadname zum
Quellverzeichnis ist bei der Ermittlung der Ausgabedateinamen nicht erwünscht. Beachten Sie, dass dies
Die Präfixerkennung wird angewendet, bevor festgestellt wird, ob die Quelldatei absolut ist.

-u
--unconditional-branches
Wenn Verzweigungswahrscheinlichkeiten angegeben sind, schließen Sie die von unbedingten Verzweigungen ein.
Unbedingte Verzweigungen sind normalerweise nicht interessant.

-d
--Anzeige-Fortschritt
Zeigen Sie den Fortschritt auf der Standardausgabe an.

gcov sollte mit dem aktuellen Verzeichnis genauso ausgeführt werden wie beim Aufrufen der
Compiler. Andernfalls können die Quelldateien nicht gefunden werden. gcov produziert Dateien
namens verstümmeltname.gcov im aktuellen Verzeichnis. Diese enthalten die Deckungsinformationen
der Quelldatei, der sie entsprechen. Einer .gcov Datei wird für jede Quelle erzeugt (oder
header) Datei mit Code, der kompiliert wurde, um die Datendateien zu erzeugen. Die
verstümmelter Name Ein Teil des Ausgabedateinamens ist normalerweise einfach der Quelldateiname, kann aber
etwas komplizierter sein, wenn die -l or -p Optionen gegeben sind. Siehe diese Optionen
für weitere Einzelheiten.

Wenn du rufst gcov bei mehreren Eingabedateien sind die Beiträge jeder Eingabedatei
summiert. Normalerweise würden Sie es mit derselben Liste von Dateien aufrufen wie den letzten Link von
Ihre ausführbare Datei.

Das .gcov Dateien enthalten die : getrennte Felder zusammen mit dem Programmquellcode. Das Format
is

: :

Zusätzliche Blockinformationen können jeder Zeile folgen, wenn sie von der Befehlszeilenoption angefordert werden.
Das Ausführung_Anzahl is - für Zeilen, die keinen Code enthalten. Nicht ausgeführte Zeilen sind markiert #####
or ====, je nachdem, ob sie auf nicht außergewöhnlichen Wegen oder nur erreichbar sind
Ausnahmepfade wie C++-Ausnahmehandler.

Einige Informationszeilen am Anfang haben Zeilennummer von null. Diese Präambelzeilen sind
der Form

-:0: :

Die Reihenfolge und Anzahl dieser Präambelzeilen wird erweitert wie gcov Entwicklung
Fortschritte --- verlassen Sie sich nicht darauf, dass sie unverändert bleiben. Verwenden Etikett einen bestimmten lokalisieren
Präambelzeile.

Die zusätzlichen Blockinformationen haben die Form



Das Information ist für Menschen lesbar, aber so konzipiert, dass es für die maschinelle Analyse einfach genug ist
Auch.

Beim Drucken von Prozentsätzen werden 0 % und 100 % nur gedruckt, wenn die Werte genau 0% und
100% bzw. Andere Werte, die konventionell auf 0 % oder 100 % gerundet würden, sind
stattdessen als nächster Nicht-Grenzwert gedruckt.

Beim Benutzen gcov, müssen Sie Ihr Programm zunächst mit zwei speziellen GCC-Optionen kompilieren:
-fprofile-Bögen -Ftest-Abdeckung. Dies weist den Compiler an, zusätzliche
Informationen, die von gcov benötigt werden (im Grunde ein Flussdiagramm des Programms) und beinhaltet auch
zusätzlicher Code in den Objektdateien zum Generieren der zusätzlich benötigten Profiling-Informationen
von gcov. Diese zusätzlichen Dateien werden in dem Verzeichnis abgelegt, in dem sich die Objektdatei befindet
gelegen.

Wenn das Programm ausgeführt wird, wird eine Profilausgabe generiert. Für jede Quelldatei
zusammengestellt mit -fprofile-Bögen, eine begleitende .ggda Datei wird in der Objektdatei abgelegt
Verzeichnis.

Laufen gcov mit den Quelldateinamen Ihres Programms als Argumente erzeugt jetzt eine Auflistung
des Codes zusammen mit der Häufigkeit der Ausführung für jede Zeile. Zum Beispiel, wenn Ihr Programm
wird genannt tmp.c, das sehen Sie, wenn Sie die Basis verwenden gcov Einrichtung:

$ gcc -fprofile-arcs -ftest-coverage tmp.c
$ a.out
$ gcov tmp.c
90.00 % von 10 Quellzeilen, die in der Datei tmp.c ausgeführt wurden
tmp.c.gcov erstellen.

Die Datei tmp.c.gcov enthält Ausgabe von gcov. Hier ist ein Beispiel:

-: 0:Quelle:tmp.c
-: 0:Grafik:tmp.gcno
-: 0:Daten:tmp.gcda
-: 0:Läufe:1
-: 0:Programme:1
-: 1:#include
-: 2:
-: 3:int main (leer)
1: 4: {
1: 5: int i, gesamt;
-: 6:
1: 7: gesamt = 0;
-: 8:
11: 9: für (i = 0; i < 10; i++)
10: 10: gesamt += i;
-: 11:
1: 12: if (Gesamt != 45)
#####: 13: printf ("Fehler\n");
-: 14: sonst
1: 15: printf ("Erfolg\n");
1: 16: 0 zurück;
-: 17:}

Wenn Sie die -a Option erhalten Sie einzelne Blockzahlen und die Ausgabe sieht aus
so was:

-: 0:Quelle:tmp.c
-: 0:Grafik:tmp.gcno
-: 0:Daten:tmp.gcda
-: 0:Läufe:1
-: 0:Programme:1
-: 1:#include
-: 2:
-: 3:int main (leer)
1: 4: {
1: 4-Block 0
1: 5: int i, gesamt;
-: 6:
1: 7: gesamt = 0;
-: 8:
11: 9: für (i = 0; i < 10; i++)
11: 9-Block 0
10: 10: gesamt += i;
10: 10-Block 0
-: 11:
1: 12: if (Gesamt != 45)
1: 12-Block 0
#####: 13: printf ("Fehler\n");
$$$$$: 13-Block 0
-: 14: sonst
1: 15: printf ("Erfolg\n");
1: 15-Block 0
1: 16: 0 zurück;
1: 16-Block 0
-: 17:}

In diesem Modus wird jeder Basisblock nur in einer Zeile angezeigt – der letzten Zeile des Blocks. EIN
ein mehrzeiliger Block trägt nur zur Ausführungszählung dieser letzten Zeile bei und andere
Es wird nicht angezeigt, dass Zeilen Code enthalten, es sei denn, vorherige Blöcke enden auf diesen Zeilen. Die
die Gesamtausführungsanzahl einer Zeile wird angezeigt und die nachfolgenden Zeilen zeigen die Ausführungsanzahlen
für einzelne Blöcke, die auf dieser Zeile enden. Nach jedem Block zählt die Verzweigung und der Anruf
des Blocks wird angezeigt, wenn die -b Option gegeben ist.

Aufgrund der Art und Weise, wie GCC Anrufe instrumentiert, kann eine Anrufanzahl nach einer Zeile ohne Nein angezeigt werden
einzelne Blöcke. Wie Sie sehen, enthält Zeile 13 einen Basisblock, der nicht ausgeführt wurde.

Wenn Sie die -b Option sieht Ihre Ausgabe so aus:

$ gcov -b tmp.c
90.00 % von 10 Quellzeilen, die in der Datei tmp.c ausgeführt wurden
80.00% von 5 ausgeführten Verzweigungen in der Datei tmp.c
80.00% von 5 Zweigen wurden mindestens einmal in der Datei tmp.c genommen
50.00 % von 2 ausgeführten Aufrufen in der Datei tmp.c
tmp.c.gcov erstellen.

Hier ist ein Beispiel für ein Ergebnis tmp.c.gcov Datei:

-: 0:Quelle:tmp.c
-: 0:Grafik:tmp.gcno
-: 0:Daten:tmp.gcda
-: 0:Läufe:1
-: 0:Programme:1
-: 1:#include
-: 2:
-: 3:int main (leer)
Funktion main aufgerufen 1 zurückgegeben 1 Blöcke ausgeführt 75%
1: 4: {
1: 5: int i, gesamt;
-: 6:
1: 7: gesamt = 0;
-: 8:
11: 9: für (i = 0; i < 10; i++)
Zweig 0 genommen 91% (Fallthrough)
Filiale 1 belegt 9%
10: 10: gesamt += i;
-: 11:
1: 12: if (Gesamt != 45)
Zweig 0 genommen 0% (Fallthrough)
Filiale 1 belegt 100%
#####: 13: printf ("Fehler\n");
Aufruf 0 wurde nie ausgeführt
-: 14: sonst
1: 15: printf ("Erfolg\n");
Anruf 0 Anruf 1 hat 100% zurückgegeben
1: 16: 0 zurück;
-: 17:}

Für jede Funktion wird eine Zeile ausgegeben, die zeigt, wie oft die Funktion aufgerufen wird, wie
oft gibt es zurück und wie viel Prozent der Funktionsblöcke ausgeführt wurden.

Für jeden Grundblock wird nach der letzten Zeile des Grundblocks eine Zeile gedruckt, die . beschreibt
die Verzweigung oder der Aufruf, der den Basisblock beendet. Es kann mehrere Zweige und Anrufe geben
für eine einzelne Quellzeile aufgeführt, wenn mehrere Basisblöcke in dieser Zeile enden.
Dabei erhalten die Nebenstellen und Rufe jeweils eine Nummer. Es gibt keinen einfachen Weg
Ordnen Sie diese Zweige zu und rufen Sie Quellkonstrukte auf. Im Allgemeinen jedoch die niedrigsten
nummerierte Verzweigung oder Aufruf entspricht dem Konstrukt ganz links in der Quellzeile.

Für eine Verzweigung, wenn sie mindestens einmal ausgeführt wurde, dann ein Prozentsatz, der die Anzahl der
die Anzahl der ausgeführten Verzweigungen dividiert durch die Anzahl der ausgeführten Verzweigungen beträgt
gedruckt. Andernfalls wird die Meldung "nie ausgeführt" gedruckt.

Wenn ein Anruf mindestens einmal ausgeführt wurde, dann ein Prozentsatz, der die Anzahl der
mal der zurückgegebene Anruf geteilt durch die Anzahl der ausgeführten Aufrufe ist
gedruckt. Dieser beträgt normalerweise 100 %, kann jedoch bei Funktionen, die "exit" aufrufen, niedriger sein
"longjmp" und werden daher möglicherweise nicht bei jedem Aufruf zurückgegeben.

Die Ausführungszählungen sind kumulativ. Wenn das Beispielprogramm erneut ausgeführt wurde ohne
entferne den .ggda Datei, die Anzahl der Male, die jede Zeile in der Quelle hat, war
ausgeführt würde zu den Ergebnissen der vorherigen Ausführung(en) hinzugefügt werden. Das ist potenziell nützlich
In vielen Wegen. Es könnte beispielsweise verwendet werden, um Daten über eine Reihe von
Programm läuft als Teil einer Test-Verifizierungs-Suite oder um eine genauere langfristige
Informationen über eine Vielzahl von Programmläufen.

Die Daten in der .ggda Dateien werden unmittelbar vor dem Beenden des Programms gespeichert. Für jeden
Quelldatei kompiliert mit -fprofile-Bögen, versucht der Profiling-Code zunächst, ein
vorhandenen .ggda Datei; wenn die Datei nicht mit der ausführbaren Datei übereinstimmt (abweichende Anzahl von grundlegenden
Blockzählungen) wird der Inhalt der Datei ignoriert. Es fügt dann die neue Ausführung hinzu
zählt und schreibt schließlich die Daten in die Datei.

Die richtigen gcov mit GCC OPTIMIERUNG

Wenn Sie vorhaben zu verwenden gcov Um Ihren Code zu optimieren, müssen Sie zuerst Ihr Programm kompilieren
mit zwei speziellen GCC-Optionen: -fprofile-Bögen -Ftest-Abdeckung. Abgesehen davon kannst du
andere GCC-Optionen verwenden; aber wenn du beweisen willst, dass jede einzelne Zeile in deinem Programm
ausgeführt wurde, sollten Sie nicht gleichzeitig mit Optimierung kompilieren. Auf einigen Maschinen
der Optimierer kann einige einfache Codezeilen eliminieren, indem er sie mit anderen Zeilen kombiniert.
Code zum Beispiel wie folgt:

wenn (a != b)
c = 1;
sonst
c = 0;

kann auf einigen Maschinen in eine Anweisung kompiliert werden. In diesem Fall gibt es keine Möglichkeit für
gcov um separate Ausführungszähler für jede Zeile zu berechnen, da es keine separate gibt
Code für jede Zeile. Daher die gcov Die Ausgabe sieht so aus, wenn Sie das Programm kompiliert haben
mit Optimierung:

100: 12:wenn (a != b)
100: 13: c = 1;
100: 14:sonst
100: 15: c = 0;

Die Ausgabe zeigt, dass dieser Codeblock, kombiniert durch Optimierung, 100 Mal ausgeführt wurde.
In gewisser Hinsicht ist dieses Ergebnis richtig, denn es gab nur eine Anweisung, die
alle vier dieser Zeilen. Die Ausgabe zeigt jedoch nicht an, wie oft das Ergebnis
0 war und wie oft das Ergebnis 1 war.

Inlineable Funktionen können zu unerwarteten Zeilenzahlen führen. Die Zeilenanzahl wird für die angezeigt
Quellcode der inlinefähigen Funktion, aber was angezeigt wird, hängt davon ab, wo sich die Funktion befindet
inlined, oder wenn es überhaupt nicht inlined ist.

Wenn die Funktion nicht inlined ist, muss der Compiler eine Kopie des
-Funktion in jeder Objektdatei, die sie benötigt. Wenn DateiA.o und DateiB.o beide enthalten aus
Linienkörper einer bestimmten inlinebaren Funktion enthalten, enthalten beide auch Coverage
zählt für diese Funktion. Wann DateiA.o und DateiB.o miteinander verknüpft sind, wird der Linker,
Wählen Sie auf vielen Systemen einen dieser Textkörper für alle Anrufe an diese Funktion aus.
und entfernen oder ignorieren Sie den anderen. Leider werden die Abdeckungszähler nicht entfernt
für den ungenutzten Funktionskörper. Daher verwenden, wenn instrumentiert, alle bis auf eine Verwendung dieser Funktion
zeigt Null-Zählungen an.

Wenn die Funktion an mehreren Stellen inline ist, kann die Blockstruktur an jeder Stelle
nicht gleich sein. Zum Beispiel könnte eine Bedingung jetzt zur Kompilierzeit in . berechenbar sein
einige Instanzen. Weil die Abdeckung aller Verwendungen der Inline-Funktion angezeigt wird
für dieselben Quellzeilen können die Zeilenzählungen selbst inkonsistent erscheinen.

Anwendungen mit langer Laufzeit können die Funktionen "_gcov_reset" und "_gcov_dump" verwenden, um
Beschränken Sie die Profilsammlung auf die interessierende Programmregion. Aufruf von "_gcov_reset(void)"
löscht alle Profilzähler auf Null und das Aufrufen von "_gcov_dump(void)" führt zu dem
Profilinformationen, die an diesem Punkt gesammelt werden, werden an weitergeleitet .ggda Ausgabedateien.

Verwenden Sie aarch64-linux-gnu-gcov-4.8 online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad