Der Standard-GNU-Profiler gprof ist für die meisten Unix-ähnlichen Systeme verfügbar. gprof ist Teil der GNU-Toolchain und war eines der frühesten Open-Source-Code-Profiling-Tools. Es kombiniert Instrumentierung zur Kompilierzeit und Sampling-Techniken mit einer Abtastrate von 100 Hz. Es hat den Vorteil, dass es keine Kernel-Unterstützung benötigt.
Um ein Programm für die Profilerstellung mit gprof vorzubereiten, fügen Sie -pg zu den Compiler- und Link-Flags hinzu, wodurch Code in die Funktionspräambel eingefügt wird, der Informationen über den Aufrufbaum sammelt. Wenn Sie das Programm ausführen, werden Proben gesammelt und in einem Puffer gespeichert, der in eine Datei namens gmon.out geschrieben wird, wenn das Programm beendet wird.
wenn beim Ausführen des gprof-Befehls der folgende Fehler auftritt:
Sie können versuchen, das Paket binutils wie unten gezeigt gemäß Ihrer Wahl der Distribution zu installieren.
Verteilung | Befehl |
---|---|
OS X | brew install binutils |
Debian | apt-get install binutils |
Ubuntu | apt-get install binutils |
Alpin | apk füge binutils hinzu |
Arch Linux | pacman -S binutils |
Kali-Linux | apt-get install binutils |
CentOS | yum installiere binutils |
Fedora | dnf installiere binutils |
Raspbian | apt-get install binutils |
gprof zeigt die Profildaten für eine Objektdatei an. Die Symboltabelle der Datei wird mit der Call-Graph-Profildatei gmon.out (zuvor durch Kompilieren mit gcc -pg erstellt) verglichen. Viele der Optionen von gprof nehmen ein Symbolspezifikationsargument oder symspec, um die Option auf bestimmte Dateien oder Funktionen zu beschränken. Die symspec kann ein Dateiname, eine Funktion oder eine Zeilennummer sein. Es kann auch als Dateiname:Funktion oder Dateiname:Zeilennummer angegeben werden, um eine Funktion oder Zeilennummer in einer bestimmten Datei anzugeben. gprof erwartet, dass Dateinamen einen Punkt enthalten und Funktionen keinen Punkt enthalten.