Befehl "cflow"

Zweck

Generiert ein C- und C++-Ablaufdiagramm externer Referenzen.

Syntax

cflow-d Zahl ] [  -I Verzeichnis ] [  -i _ ] [  -i p ] [  -i x ] [  -qOption ] [  -r ] [  -MA ] [  -U Name ] [  -NdZahl ] [  -NlZahl ] [  -NnZahl ] [  -NtZahl ] [  -D Name[=Definition ] ] Datei ...

Beschreibung

Der Befehl cflow analysiert die C-, C++-, yacc-, lex-, Assembler- und Objektdateien und schreibt ein Diagramm ihrer externen Referenzen in die Standardausgabe.

Anmerkung Die Verarbeitung von C++-Sprachdateien durch den Befehl cflow setzt das IBM® C Set++ Compiler/6000-Paket voraus.

Der Befehl cflow sendet Dateien mit den Suffixen .y, .l und .c zur Verarbeitung an die Befehle yacc, lex und cpp. In einem modifizierten ersten Durchlauf des Befehls lint werden dann die Ausgaben von yacc, lex und cpp und alle .i-Dateien verarbeitet. Der Befehl cflow sendet Dateien mit dem Suffix .C an den C Set++-Compiler.

Der Befehl cflow assembliert Dateien mit dem Suffix .s, indem er Informationen aus der Symboltabelle (wie bei Dateien mit dem Suffix .o) extrahiert. Aus dieser Ausgabe erzeugt der Befehl cflow ein Diagramm externer Referenzen und schreibt es in die Standardausgabe.

Jede Ausgabezeile enthält die folgenden Informationen (von links nach rechts):

  • Eine Zeilennummer, gefolgt von Tabulatoren, die die Verschachtelungsebene angeben.
  • Der Name der globalen Variablen, einen Doppelpunkt und die Definition.

Der Name ist gewöhnlich eine Funktion, die nicht als externe Funktion definiert ist und nicht mit einem Unterstreichungszeichen beginnt (weitere Informationen finden Sie in den Beschreibungen der Einschlussflags -i_ und -i).

Bei Informationen, die aus C- und C++-Quellendateien extrahiert wurden, setzt sich die Definition aus der Deklaration eines abstrakten Typs (z. B. char *), dem Namen der Quellendatei in spitzen Klammern und der Zeilennummer, in der die Definition gefunden wurde, zusammen. Aus Objektdateien extrahierte Definitionen enthalten den Dateinamen und den Positionszähler für das Symbol, z. B. .text oder .data. Der Befehl cflow löscht führende Unterstreichungszeichen in externen Namen im C-Stil.

Sobald der Befehl cflow einen Namen anzeigt, enthalten spätere Referenzen auf den Namen nur die Nummer der cflow-Zeile mit der Definition. Für nicht definierte Referenzen zeigt der Befehl cflow nur <> (eckige Klammern) an.

Wenn die Verschachtelungsebene für die Anzeige im verfügbaren Bereich zu tief wird, können Sie die Ausgabe des Befehls cflow über eine Pipe an den Befehl pr weiterleiten und mit dem Flag -e die Tabulatorerweiterung auf weniger als acht Leerzeichen pro Tabulatorstopp komprimieren.

Anmerkung: Um sicherzustellen, dass die vom Befehl cflow erzeugten Zeilennummern Ihren lex- und yacc-Dateien entsprechen, müssen Sie die .l- bzw. .y-Datei an den Befehl cflow senden.

Flags

Element Beschreibung
-d Zahl Legt mit einer dezimalen Ganzzahl die Tiefe für das Ablaufdiagramm fest. Standardmäßig ist dies eine große Zahl. Geben Sie für die maximale Verschachtelungstiefe keine nicht positive Ganzzahl an.
-i _ Schließt Namen ein, die mit einem Unterstreichungszeichen beginnen. Standardmäßig werden diese Funktionen (und alle entsprechenden Daten,wenn das Flag -ix verwendet wird) ausgeschlossen.
-i p Inaktiviert die ANSI-Funktionsprototypen. Standardmäßig werden für nicht definierte Funktionen verfügbare Prototypdeklarationen eingetragen.
-i x Schließt externe und statische Datensymbole ein. Standardmäßig werden nur Funktionen eingeschlossen.
-r Erzeugt eine invertierte Liste mit den Aufrufern jeder einzelnen Funktionen nach aufgerufener Funktion sortiert.
-MA Gibt den ANSI-Modus an. Der Befehl cflow erwartet in diesem Modus ANSI-C-Code. Der Standardbetriebsmodus ist der erweiterte Modus.
-NdZahl Ändert die Größe der Dimensionstabelle in den mit dem Parameter Zahl angegebenen Wert. Der Standardwert für Zahl ist 2000.
-NlZahl Ändert die Anzahl der Typknoten in den mit dem Parameter Zahl angegebenen Wert. Der Standardwert für Zahl ist 8000.
-NnZahl Ändert die Größe der Symboltabelle in den mit dem Parameter Zahl angegebenen Wert. Der Standardwert für Zahl ist 1500.
-NtZahl Ändert die Anzahl der Baumknoten in den mit dem Parameter Zahl angegebenen Wert. Der Standardwert für Zahl ist 1000.

Der Befehl cflow erkennt auch die folgenden Flags des Befehls cpp (Makrovorprozessor):

Element Beschreibung
-D Name[=Definition] Definiert den Parameter Name wie mit der #define-Anweisung. Der Standardwert für Definition ist 1.
-qOption Übergibt -qOption an den Vorprozessor. -qmbcs legt beispielsweise den in der aktuellen Ländereinstellung angegebenen Mehrbytemodus fest und -qidirfirst ändert die Suchreihenfolge für Dateien, die mit der Anweisung #include Dateiname angegeben werden.
-I Verzeichnis Fügt das angegebene Verzeichnis zur Liste der Verzeichnisse hinzu, in denen das cflow-Programm nach #include-Dateien sucht.
-U Name Entfernt die Anfangsdefinition des Parameters Name, wobei Name ein reserviertes Symbol ist, das vom jeweiligen Vorprozessor vordefiniert ist.

Exitstatus

Diese Befehle geben die folgenden Exitwerte zurück:

Element Beschreibung
0 Erfolgreiche Ausführung.
>0 Es ist ein Fehler aufgetreten.

Beispiele

  1. Geben Sie Folgendes ein, um ein Standardablaufdiagramm der C-Dateien zu generieren, aus denen ein Programm besteht:
    
    cflow timeout.c kill.c error.c 
  2. Geben Sie Folgendes ein, um ein cflow-Diagramm mit einer einzigen Funktionsverschachtelungsebene zu erzeugen:
    
    cflow -d1 resam.c pptp.c ptpt.c rrr.c whn.c
  3. Geben Sie Folgendes ein, um ein cflow-Diagramm eines lex-Programms zu generieren:
    cflow scan.l
  4. Geben Sie Folgendes ein, um ein cflow-Diagramm des yacc-Programms zu generieren:
    cflow yaccfile.y
  5. Geben Sie Folgendes ein, um eine invertierte Liste mit den Aufrufern der einzelnen Funktionen in den C-Dateien, die im Beispiel 2 verwendet werden, zu generieren:
    cflow -r resam.c pptp.c ptpt.c rrr.c whn.c

Dateien

Element Beschreibung
/usr/ccs/bin/cflow Enthält den Treiber für den Befehl cflow.
/usr/ccs/lib/cflow1 Enthält eine ausführbare Datei für den Befehl cflow.
/usr/ccs/lib/dag Enthält eine ausführbare Datei für den Befehl cflow.
/usr/ccs/lib/flip Enthält eine ausführbare Datei für den Befehl cflow.
/usr/ccs/lib/lpfx Enthält eine ausführbare Datei für den Befehl cflow.
/usr/ccs/lib/nmf Enthält eine ausführbare Datei für den Befehl cflow.
/var/tmp/cf.* Enthält temporäre Dateien, die vom Befehl cflow erstellt werden.