sprof(1) General Commands Manual sprof(1) BEZEICHNUNG sprof - Daten der Laufzeitbibliothek lesen und anzeigen UBERSICHT sprof [Option ] Laufzeitbibliothekpfad [Profilierungsdatenpfad] BESCHREIBUNG Der Befehl sprof zeigt die Profilierungszusammenfassung fur die als erstes Befehlszeilenargument angegebene Laufzeitbibliothek an. Die Profilierungszusammenfassung wird aus vorab erstellten Profilierungsdaten in dem (optionalen) zweiten Befehlszeilenargument erzeugt. Falls der Profilierungsdatenpfad nicht angegeben wird, dann wird sprof versuchen, ihn mittels des Sonamens der Laufzeitbibliothek abzuleiten, indem es nach einer Datei mit dem Namen .profile im aktuellen Verzeichnis sucht. OPTIONEN Die folgenden Befehlszeilenoptionen geben an, welche Profilierungsausgabe erstellt werden soll: --call-pairs -c Gibt eine Liste von Paaren von Aufrufpfaden fur die durch die Laufzeitbibliothek exportierten Schnittstellen aus, zusammen mit der Anzahl der Verwendungen jedes Pfades. --flat-profile -p Erstellt ein flaches Profil aller Funktionen in dem uberwachten Objekt, mit Zahlern und Ticks. --graph -q Erstellt einen Aufrufgraphen. Falls keine der obigen Optionen angegeben ist, dann ist das Standardverhalten die Anzeige eines flachen Profils und eines Aufrufgraphen. Die folgenden zusatzlichen Befehlszeilenoptionen sind verfugbar: --help -? Zeigt eine Zusammenfassung der Befehlszeilenoptionen und -argumente und beendet das Programm. --usage Zeigt eine kurze Gebrauchsinformation und beendet sich. --version -V Zeigt die Programmversion an und beendet das Programm. STANDARDS GNU. BEISPIELE Das folgende Beispiel zeigt die Verwendung von sprof. Das Beispiel besteht aus einem Hauptprogramm, das zwei Funktionen in einer Laufzeitbibliothek aufruft. Zuerst der Code des Hauptprogramms: $ cat prog.c; #include void x1(void); void x2(void); int main(int argc, char *argv[]) { x1(); x2(); exit(EXIT_SUCCESS); } Die Funktionen x1() und x2() sind in der folgenden Quelldatei definiert, die zur Erstellung der Laufzeitbibliothek verwandt wird: $ cat libdemo.c; #include void consumeCpu1(int lim) { for (unsigned int j = 0; j < lim; j++) getppid(); } void x1(void) { for (unsigned int j = 0; j < 100; j++) consumeCpu1(200000); } void consumeCpu2(int lim) { for (unsigned int j = 0; j < lim; j++) getppid(); } void x2(void) { for (unsigned int j = 0; j < 1000; j++) consumeCpu2(10000); } Jetzt wird die Laufzeitbibliothek mit dem echten Namen libdemo.so.1.0.1 und dem Sonamen libdemo.so.1 erstellt: $ cc -g -fPIC -shared -Wl,-soname,libdemo.so.1 \ -o libdemo.so.1.0.1 libdemo.c; Dann werden symbolische Links fur die Bibliothek-Sonamen und den Bibliothek-Linkernamen konstruiert: $ ln -sf libdemo.so.1.0.1 libdemo.so.1; $ ln -sf libdemo.so.1 libdemo.so; Dann wird das Hauptprogramm kompiliert, gegen die Laufzeitbibliothek gelinkt und dann die dynamischen Abhangigkeiten des Programms aufgelistet: $ cc -g -o prog prog.c -L. -ldemo; $ ldd prog; linux-vdso.so.1 => (0x00007fff86d66000) libdemo.so.1 => not found libc.so.6 => /lib64/libc.so.6 (0x00007fd4dc138000) /lib64/ld-linux-x86-64.so.2 (0x00007fd4dc51f000) Um die Profilierungsinformationen fur die Laufzeitbibliothek zu erhalten, wird die Umgebungsvariable LD_PROFILE mit dem Sonamen der Bibliothek definiert: $ export LD_PROFILE=libdemo.so.1; Dann wird die Umgebungsvariable LD_PROFILE_OUTPUT mit dem Pfadnamen des Verzeichnisses, in dem die Profilierungsausgabe geschrieben werden soll, definiert und das Verzeichnis erstellt, falls es nicht bereits existiert: $ export LD_PROFILE_OUTPUT=$(pwd)/prof_data; $ mkdir -p $LD_PROFILE_OUTPUT; LD_PROFILE fuhrt dazu, dass die Profilierungsausgabe an die Ausgabedatei angehangt wird, falls diese bereits existiert, daher wird jetzt sichergestellt, dass noch keine Profilierungsdaten existieren: $ rm -f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile; Dann wird das Programm ausgefuhrt, um die Profilierungsausgabe zu erstellen, die dann in die Datei in dem in LD_PROFILE_OUTPUT festgelegten Verzeichnis geschrieben wird: $ LD_LIBRARY_PATH=. ./prog; $ ls prof_data; libdemo.so.1.profile Anschliessend wird die Option sprof -p verwandt, um ein flaches Profil mit Zahlern und Ticks zu erstellen: $ sprof -p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile; Flat profile: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls us/call us/call name 60.00 0.06 0.06 100 600.00 consumeCpu1 40.00 0.10 0.04 1000 40.00 consumeCpu2 0.00 0.10 0.00 1 0.00 x1 0.00 0.10 0.00 1 0.00 x2 Die Option sprof -q erstellt einen Aufrufgraphen: $ sprof -q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile; index % time self children called name 0.00 0.00 100/100 x1 [1] [0] 100.0 0.00 0.00 100 consumeCpu1 [0] ----------------------------------------------- 0.00 0.00 1/1 [1] 0.0 0.00 0.00 1 x1 [1] 0.00 0.00 100/100 consumeCpu1 [0] ----------------------------------------------- 0.00 0.00 1000/1000 x2 [3] [2] 0.0 0.00 0.00 1000 consumeCpu2 [2] ----------------------------------------------- 0.00 0.00 1/1 [3] 0.0 0.00 0.00 1 x2 [3] 0.00 0.00 1000/1000 consumeCpu2 [2] ----------------------------------------------- Oberhalb und unterhalb der Zeichenketten >><< werden Kennzeichner dargestellt, die ausserhalb der profilierten Bibliothek sind (in diesem Beispiel sind es Instanzen von main()). Die Option sprof -c erstellt eine Liste der Aufrufpaare und ihrer Auftrittsanzahl. $ sprof -c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile; x1 1 x1 consumeCpu1 100 x2 1 x2 consumeCpu2 1000 SIEHE AUCH gprof(1), ldd(1), ld.so(8) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.18 8. Februar 2026 sprof(1)