Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lprof(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

fork(2)

tmpnam(3S)

lprof(1)                                                           lprof(1)

NAME
     lprof - Ausführungsprofil zeilenweise ausgeben

SYNTAX
     lprof [-p] [-s] [-x] [-I incdv] [-r srcdatei] [-c cntdatei] [-o prog] [-V]

     lprof -m datei1.cnt datei2.cnt datein.cnt [-T] -d destdatei.cnt

BESCHREIBUNG
     lprof meldet die Ausführungscharakteristika eines Programms zeilen-
     weise. Für die Zeilenangaben ist das Quellprogramm ausschlaggebend.
     Dies ist dann sinnvoll, wenn festgestellt werden soll, welche Code-
     teile ausgeführt wurden und wie oft diese ausgeführt wurden.

     lprof interpretiert eine Datei mit Meßwerten (standardmäßig prog.cnt),
     die von dem profilierten Programm prog erstellt wird (standardmäßig
     a.out). prog erstellt eine Datei mit Meßwerten, wenn es mit der cc-
     Option -ql geladen wurde. Die Profil-Informationen werden für Funktio-
     nen in einer Quelldatei berechnet, wenn bei der Übersetzung der Quell-
     datei die Option -ql verwendet wurde.

     Für ein gemeinsam nutzbares Objekt kann ein Profil erstellt werden,
     indem bei der Erstellung des gemeinsam nutzbaren Objekts -ql angegeben
     wird. Wenn eine dynamisch gebundene, ausführbare Datei abläuft, wird
     für jedes profilierte, gemeinsam nutzbares Objekt, das zur ausführba-
     ren Datei gebunden ist, eine Datei mit Meßwerten erstellt. Dieses
     Merkmal ist dann sinnvoll einsetzbar, wenn ein Bericht über mehrere
     unterschiedliche Ausführungen einer gemeinsamen Bibliothek erstellt
     werden soll. Wenn die Programme prog1 und prog2 zum Beispiel beide die
     Bibliothek libx.a verwenden, werden beim Ablauf der profilierten Pro-
     gramme zwei Dateien mit Meßwerten, prog1.cnt und prog2.cnt, erstellt.
     Diese beiden Dateien können nicht kombiniert werden. Wenn libx jedoch
     als profiliertes, gemeinsam nutzbares Objekt (libx.so) erstellt wird
     und prog1 und prog2 als profilierte, dynamisch gebundene, ausführbare
     Dateien erstellt werden, so erstellt der Ablauf dieser Programme mit
     der Option merge drei Dateien mit Meßwerten. eine Datei, libx.so.cnt,
     enthält die Profil-Informationen libx aus beiden Abläufen.

     lprof gibt standardmäßig ein Listing mit Quellcodedateien aus (die
     Namen sind in der Symboltabelle der ausführbaren Datei abgelegt).
     Dabei steht vor jeder Zeile die Zeilennummer (in der Quellcodedatei)
     und die Häufigkeit der Ausführung dieser Zeile.













Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

lprof(1)                                                           lprof(1)

OPTIONEN
     Die folgenden Optionen können einzeln oder, in beliebiger Reihenfolge,
     in Kombination angegeben werden:

     -p   Listing ausgeben. Dabei steht vor jeder Zeile die Zeilennummer
          und die Häufigkeit der Ausführung (Standard). Diese Option kann
          zusammen mit der Option -s verwendet werden. Dann werden sowohl
          das Listing mit dem Quellcode als auch eine Zusammenfassung aus-
          gegeben.

     -s   Zusammenfassung ausgeben, welcher Prozentsatz des Codes pro Funk-
          tion ausgeführt wurde.

     -x   Statt der Anzahl der Ausführungen soll vor jeder Zeile die Zei-
          lennummer angegeben werden. Wenn die Zeile nicht ausgeführt
          wurde, soll für diese Zeile ein [U] ausgegeben werden. Wenn die
          Zeile ausgeführt wurde, wird nur die Zeilennummer ausgegeben.

     -I incdv
          Nach Quell- oder Include-Dateien wird, zusätzlich zum aktuellen
          Dateiverzeichnis und dem Standard-Dateiverzeichnis für #include-
          Dateien (normalerweise /usr/include), auch im Dateiverzeichnis
          incdv gesucht. Der Benutzer kann mehrere Dateiverzeichnisse ange-
          ben, indem er die Option -I mehrmals verwendet.

     -r srcdatei
          Statt alle Quellcodedateien sollen nur die Dateien ausgegeben
          werden, die bei der Option -r angegeben sind (kann nur zusammen
          mit der Option -p verwendet werden). Der Benutzer kann mit einer
          Option -r  mehrere Dateien angeben.

     -c cntdatei
          Als Eingabedatei mit Meßwerten soll die Datei cntdatei, und nicht
          prog.cnt, verwendet werden.

     -o prog
          Den Namen des Programms prog statt des Namens verwenden, der ver-
          wendet wurde, als die Datei mit den Meßwerten erstellt wurde. Da
          der in der Datei mit Meßwerten abgelegte Programmname den relati-
          ven Pfad enthält, ist diese Option notwendig, wenn die ausführ-
          bare Datei oder die Datei mit den Meßwerten verschoben wurde.

     -V   Versionsnummer von lprof auf die Standardfehlerausgabe ausgeben.

   Mischen von Datendateien (Merge)

     lprof kann auch dazu verwendet werden, Dateien mit Meßwerten zu
     mischen. Die Option -m muß zusammen mit der Option -d verwendet wer-
     den:





Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

lprof(1)                                                           lprof(1)

     -m datei1.cnt datei2.cnt datein.cnt -d destdatei.cnt
          Mischen der Datendateien datei1.cnt bis datein.cnt durch Summie-
          ren der Ablaufzähler pro Zeile. Daten von verschiedenen Durchläu-
          fen können so zusammengefaßt werden. Das Ergebnis wird in
          destdatei.cnt geschrieben. Die Datendateien müssen Profildaten
          für das gleiche prog enthalten (siehe Option -T).

     -T   Ignorieren des Zeitstempels. Normalerweise werden die Zeitstempel
          der profilierten, ausführbaren Dateien überprüft. Die Datenda-
          teien werden nicht gemischt, wenn die Zeitstempel nicht überein-
          stimmen. Bei Angabe von -T wird diese Prüfung nicht durchgeführt.

   Steuerung der Laufzeit-Profilumgebung

     Die Umgebungsvariable PROFOPTS ermöglicht eine Steuerung der Profilie-
     rung zur Laufzeit. Wenn ein profiliertes Programm (oder gemeinsam
     genutztes Objekt) kurz vor der Beendigung steht, prüft es den Wert von
     PROFOPTS. So wird festgestellt, wie die Profildaten bearbeitet werden
     sollen. Ein gemeinsam genutztes Objekt, das kurz vor der Beendigung
     steht, reagiert auf jede PROFOPTS-Option außer file=dateiname.

     Die Umgebungsvariable PROFOPTS ist eine Liste mit Optionen, die durch
     Kommas getrennt sind. Diese Optionen werden von dem Programm interpre-
     tiert, für das die Profilierung ausgeführt wird. Wenn PROFOPTS in der
     Umgebung nicht definiert ist, wird die Standardaktion ausgeführt: die
     Profildaten werden in einer Datei (mit dem Standardnamen prog.cnt) im
     aktuellen Dateiverzeichnis abgelegt. Wenn PROFOPTS auf die Null-
     Zeichenkette gesetzt ist, werden keine Profildaten gespeichert. Die
     folgenden Optionen stehen zur Verfügung:

     msg=[y|n]
          Wenn msg=y angegeben ist, wird eine Meldung auf stderr ausgege-
          ben, die besagt, daß Profildaten gespeichert werden. Wird msg=n
          angegeben, so werden nur die Fehlermeldungen der Profilierung
          ausgegeben. Standard ist msg=y.

     merge=[y|n]
          Wenn merge=y angegeben wird, werden die Datendateien nach erfolg-
          reichen Durchgängen gemischt. Wenn merge=n angegeben wird, werden
          die Datendateien nach erfolgreichen Durchgängen nicht gemischt.
          Die Datendatei wird dann nach jeder Ausführung überschrieben.
          Merge schlägt fehl, wenn das Programm neu übersetzt wurde und die
          Datendatei in TMPDIR bleibt. Standard ist merge=n.











Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

lprof(1)                                                           lprof(1)

     pid=[y|n]
          Wenn pid=y angegeben wird, enthält der Name der Datendatei die
          Prozeßnummer des profilierten Programms. Durch die Aufnahme der
          Prozeßnummer wird die Erstellung unterschiedlicher Datendateien
          für Programme, die fork aufrufen, möglich. Wenn pid=n angegeben
          wird, wird der Standardname verwendet. Standard ist pid=n. Damit
          lprof einen Profilbericht erstellt, muß die Option -c für lprof
          angegeben werden. Andernfalls schlägt die Standardeinstellung
          fehl.

     dir=dvname
          Die Datendatei wird in dem Dateiverzeichnis dvname abgelegt, wenn
          diese Option angegeben wird. Andernfalls wird die Datendatei in
          dem Dateiverzeichnis erstellt, das am Ende der Ausführung das
          aktuelle Dateiverzeichnis ist.

     file=dateiname
          Wenn diese Option angegeben ist, wird dateiname als der Name der
          Datendatei in dvname verwendet, die von dem profilierten Programm
          erstellt wird. Andernfalls wird der Standardname verwendet. Wenn
          lprof einen Profilbericht erstellen soll, muß die Option -c für
          lprof angegeben werden, wenn die Dateioption bei der Ausführung
          verwendet wurde. Andernfalls schlägt die Standardeinstellung
          fehl.

HINWEISE
     Wenn destdatei.cnt existiert, wird der alte Inhalt für die Option -m
     gelöscht.

     Eine Profilierung ist für optimierten Code nicht möglich. Wenn sowohl
     die Optimierung als auch eine zeilenweise Profilierung angefordert
     werden, so hat die Profilierung Vorrang.

     Programme, die argv[0] modifizieren, sind unter lprof nicht lauffähig.

     Verschiedene Bestandteile einer Zeile in einer Quelldatei können
     unterschiedlich oft ausgeführt werden (siehe die for-Schleife im Bei-
     spiel unten). Die Zählung bezieht sich auf den ersten Teil der Zeile.
















Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

lprof(1)                                                           lprof(1)

     Im folgenden Beispiel besteht Zeile 5 mit der for-Schleife aus drei
     Teilen:

           main()
     1 [2] {
               int j;

     1 [5]     for (j = 0; j > 5; j++)
     5 [6]     sub(j);

     1 [8] }
               sub(a)
               int a;
     5 [12]    {
     5 [13]    printf(a is %d\n, a);
     5 [14]    }

     Die Anzahl für die Zeile bezieht sich jedoch auf die Initialisierung
     (j = 0).

DATEIEN
     prog.cnt
          Profildaten

     TMPDIR
          Normalerweise /var/tmp. Durch Setzen der Umgebungsvariablen
          TMPDIR ist eine Neudefinition möglich.

SIEHE AUCH
     cc(1), fork(2), tmpnam(3S).
























Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026