cscope(1) cscope(1)
NAME
cscope - C-Programme interaktiv untersuchen
SYNTAX
cscope [Option...] Datei...
BESCHREIBUNG
cscope ist ein interaktives, bildschirmorientiertes Programm, mit dem
sich Benutzer einen C-Quelltext ansehen können.
Standardmäßig untersucht cscope C-, lex- und yacc-Quellprogramme im
aktuellen Verzeichnis. cscope kann auch für Quelldateien, die in der
Kommandozeile angegeben sind, aufgerufen werden. In jedem Fall durch-
sucht cscope die Standardverzeichnisse nach #include-Dateien, die es
im aktuellen Verzeichnis nicht findet. cscope verwendet eine Querver-
weistabelle der Symbole, standardmäßig cscope.out, um Funktionen,
Funktionsaufrufe, Makros, Variablen und Symbole des C-Präprozessors in
den Dateien aufzufinden.
cscope baut die Querverweistabelle für die Symbole auf, wenn es das
erste Mal mit den Quelldateien des untersuchten Programms benutzt
wird. Bei späteren Aufrufen wird die Querverweistabelle nur dann neu
aufgebaut, wenn eine der Quelldateien geändert wurde oder die Liste
der Quelldateien unterschiedlich ist. In diesem Fall werden die Daten
der unveränderten Dateien aus der alten Querverweistabelle kopiert,
wodurch der Neuaufbau der Querverweistabelle wesentlich schneller als
der erstmalige Aufbau wird.
OPTIONEN
-b Es werden nur die Querverweise aufgebaut.
-C Beim Suchen wird Groß- und Kleinschreibung nicht berücksichtigt.
-c In der Querverweistabelle werden nur ASCII-Zeichen verwendet,
d. h. die Daten werden nicht komprimiert.
-d Die Querverweistabelle wird nicht aktualisiert.
-e Der Kommandoprompt zwischen den Dateien wird unterdrückt.
-f Verweisdatei
Anstatt cscope.out wird Verweisdatei als Dateiname für die Quer-
verweistabelle benutzt.
-I Incverz
Vor der Suche in INCDIR, dem Verzeichnis für Include-Dateien
(normalerweise /usr/include), soll in Incverz nach #include-
Dateien gesucht werden, deren Name nicht mit / beginnt und die
nicht auf der Kommandozeile oder in Namensdatei (s. u.) angegeben
wurden. Die #include-Dateien können entweder in doppelten Hoch-
kommata oder in spitzen Klammern angegeben werden. Das Verzeich-
nis Incverz wird zusätzlich zum aktuellen Verzeichnis und den
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
cscope(1) cscope(1)
Standardverzeichnissen durchsucht. Wird die Option -I mehrmals
angegeben, werden die Verzeichnisse in der auf der Kommandozeile
angegebenen Reihenfolge durchsucht.
-i Namensdatei
Statt der in der Standarddatei (cscope.files) aufgelisteten
Dateien werden alle Quelldateien untersucht, deren Namen in
Namensdatei aufgelistet sind. Dateinamen sind durch Leerzeichen,
Tabulatoren oder Zeilenendezeichen getrennt. Wird diese Option
angegeben, ignoriert cscope alle auf der Kommandozeile angegebe-
nen Dateien.
-L Die Datei wird einmal mit zeilenorientierter Ausgabe durchsucht,
wenn diese Option zusammen mit -Num Muster verwendet wird.
-l Zeilenorientierte Schnittstelle (siehe Abschnitt "Zeilenorien-
tierte Schnittstelle").
-Num Muster
Zum Eingabefeld Num gehen und Muster finden. Es wird von 0 an
gezählt.
-P Pfad
erstellt eine Querverweisdatei, in der jedem relativen Dateinamen
Pfad vorangestellt wird. Dadurch ersparen Sie sich einen Wechsel
in das Verzeichnis, in dem die Querverweisdatei erstellt wurde.
Diese Option ist nur zusammen mit der Option -d zulässig.
-p n Anstatt des Standards (1) werden die letzten n Pfadkomponenten
angezeigt. Verwenden Sie 0, um gar keine Dateinamen anzuzeigen.
-s Verz
sucht in Verz nach weiteren Quelldateien. Diese Option wird igno-
riert, wenn auf der Kommandozeile Quelldateien angegeben werden.
-T Zum Vergleich mit C-Symbolen werden nur die ersten acht Zeichen
verwendet. Ein regulärer Ausdruck, der andere Sonderzeichen als
Punkte enthält, paßt auf kein Symbol, wenn er bei minimaler Länge
weniger als acht Zeichen enthält.
-U Die Zeitstempel der Dateien sollen nicht überprüft werden. Es
wird davon ausgegangen, daß die Dateien nicht verändert wurden.
-u Die Querverweisdatei wird auf jeden Fall aufgebaut. Es wird davon
ausgegangen, daß alle Dateien verändert wurden.
-V Auf der ersten Zeile des Bildschirms wird die Versionsnummer von
cscope ausgegeben.
Die Optionen -I, -p und -T können auch in der Datei cscope.files ste-
hen.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
cscope(1) cscope(1)
Eingabe des ersten Suchbefehls
Nachdem die Querverweistabelle erzeugt wurde, zeigt cscope das fol-
gende Menü an:
Find this C symbol:
Find this global definition:
Find functions called by this function:
Find functions calling this function:
Find this text string:
Change this text string:
Find this egrep pattern:
Find this file:
Find files #including this file:
Drücken Sie die Taste TAB so lange, bis das gewünschte Eingabefeld
erreicht ist, geben Sie den gesuchten Text ein, und drücken Sie die
Taste RETURN.
Eingabe weiterer Befehle
Wenn die Suche erfolgreich war, können Sie folgende Tastenkombinatio-
nen verwenden
1-9 Zeile mit eingegebener Nummer editieren
SPACE die nächsten gefundenen Zeilen ausgeben
+ die nächsten gefundenen Zeilen ausgeben
^v die nächsten gefundenen Zeilen ausgeben
- die vorherigen gefundenen Zeilen ausgeben
^e alle ausgegebenen Dateien der Reihe nach editieren
> Zeilenliste an eine Datei anhängen
| alle angezeigten Zeilen an ein Shell-Kommando übergeben
Mit folgenden Tastenkombinationen können Sie das cscope-Menü steuern
und andere Befehle ausführen:
TAB nächstes Eingabefeld
RETURN nächstes Eingabefeld
^n nächstes Eingabefeld
^p vorheriges Eingabefeld
^y zuletzt eingegebenen Text suchen
^b nächstes Eingabefeld und Begriff suchen
^f nächstes Eingabefeld und Begriff suchen
^c bei der Suche wird Groß-/Kleinschreibung berücksichtigt
^r Querverweistabelle neu generieren
! interaktive Shell aufrufen (mit ^d zu cscope zurück)
^l Bildschirm neu aufbauen
? Hilfsinformationen über cscope-Kommandos ausgeben
^d cscope verlassen
Wenn das erste Zeichen eines gesuchten Textes einer der angegebenen
Tastenkombinationen entspricht, geben Sie vor diesem Zeichen ein \ ein.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
cscope(1) cscope(1)
Ersetzen von altem durch neuen Text
Nachdem der zu ändernde Text eingegeben wurde, fordert cscope den
neuen Text an; anschließend werden die Zeilen mit dem alten Text ange-
zeigt. Wählen Sie die zu ändernden Zeilen mit den folgenden Tasten
aus:
1-9 eine Zeile auswählen
* alle Zeilen auswählen
SPACE nächste Zeilen ausgeben
+ nächste Zeilen ausgeben
- vorherige Zeilen ausgeben
a alle Zeilen auswählen
^d ausgewählte Zeilen ändern und verlassen
ESCAPE Änderungsmodus ohne Änderung der markierten Zeilen verlassen
Besondere Tasten
Wenn Ihr Terminal Pfeiltasten hat, die im vi(1) funktionieren, können
Sie diese benutzen, um sich innerhalb der Eingabefelder zu bewegen.
Der Aufwärtspfeil ist sinnvoll, um zum vorigen Eingabefeld zu gelan-
gen, statt mehrfach die TAB-Taste zu betätigen. Wenn Sie die Tasten
CLEAR, NEXT oder PREV zur Verfügung haben, arbeiten diese wie die Kom-
mandos ^l, + und -.
Zeilenorientierte Schnittstelle
Mit der Option -l können Sie cscope auch da verwenden, wo eine bild-
schirmorientierte Schnittstelle nicht sinnvoll wäre, z. B. von einem
anderen bildschirmorientierten Programm aus.
cscope meldet sich mit >> und erwartet eine Feldnummer (von 0 an
gezählt), unmittelbar gefolgt vom Suchmuster. lmain findet z. B. die
Definition der Funktion main.
Wenn Sie die Datei nur einmal durchsuchen lassen wollen, sollten Sie
die Option -L und -Num Muster verwenden.
Für -l gibt cscope die Anzahl der Verweiszeilen aus:
cscope: 2 lines
Für jeden gefundenen Verweis gibt cscope eine Zeile aus, die aus dem
Dateinamen, dem Funktionsnamen, der Zeilennummer und dem Zeileninhalt
besteht, jeweils durch Leerzeichen getrennt, z. B.
main.c main 161 main(argc, argv)
Beachten Sie, daß der Editor, anders als bei der bildschirmorientier-
ten Schnittstelle, nicht aufgerufen wird, um einen einzigen Verweis
anzuzeigen.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
cscope(1) cscope(1)
cscope wird verlassen, wenn ein Dateiende-Zeichen entdeckt wird oder
wenn das erste Zeichen einer Eingabezeile ^d oder q ist.
Umgebungsvariablen
EDITOR
Bevorzugter Editor.
INCLUDEDIRS
Durch Doppelpunkte getrennte Liste von Verzeichnissen, die nach
#include-Dateien durchsucht werden sollen.
HOME HOME-Verzeichnis, wird beim Start einer Sitzung automatisch
gesetzt.
SHELL
Bevorzugte Shell, voreingestellt ist sh(1).
SOURCEDIRS
Durch Doppelpunkte getrennte Liste von Verzeichnissen, die nach
zusätzlichen Quelldateien durchsucht werden sollen.
TERM Terminaltyp. Es muß sich um ein bildschirmorientiertes Terminal
handeln.
TERMINFO
Vollständiger Pfadname des Terminalinformations-Verzeichnisses
Wenn Ihr Terminal-Typ nicht in dem Standardverzeichnis terminfo
steht, sehen Sie unter curses(3X) und terminfo(4) nach, um Ihre
eigene Terminalbeschreibung zu erstellen.
TMPDIR
Verzeichnis für temporäre Dateien mit dem Standardwert /var/tmp.
VIEWER
Programm zur Anzeige von Dateien [wie z. B. pg(1)] auswählen.
Diese Angabe hat Vorrang vor EDITOR.
VPATH
Eine durch Doppelpunkte getrennte Liste von Verzeichnissen, von
denen jedes dieselbe Verzeichnisstruktur hat.
Wenn VPATH gesetzt ist, sucht cscope in den angegebenen Verzeich-
nissen nach Quelldateien; sonst wird nur im aktuellen Verzeichnis
gesucht.
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
cscope(1) cscope(1)
HINWEISE
cscope erkennt Funktionsdefinitionen der Form
fname blank ( args ) white argdecs white {
fname Funktionsname.
blank Enthält beliebig viele Leerzeichen oder Tabulatoren,
allerdings keine neue Zeile.
args Zeichenkette, die kein Zeichen ", (, ) oder Neue-Zeile-
Zeichen enthalten darf.
white Enthält beliebig viele Leerzeichen, Tabulatoren, Neue-
Zeile-Zeichen.
argdecs Enthält beliebig viele Argumentdeklarationen, wobei Kom-
mentar und Leerzeichen enthalten sein können.
Es ist nicht notwendig, daß eine Funktionsdeklaration am Anfang einer
Zeile beginnt. Der Rückgabetyp kann dem Funktionsnamen vorausgehen;
cscope erkennt die Deklaration weiterhin. Funktionsdeklarationen, die
von dieser Form abweichen, werden von cscope nicht erkannt.
In der function-Spalte der Menüoption Find functions called by this
function: wird nur die erste Funktion angezeigt, die in dieser Zeile
aufgerufen wird. Für die folgende Funktion
e()
{
return (f() + g());
}
würde die Ausgabe demnach folgendermaßen aussehen:
Functions called by this function: e
File Function Line
a.c f 3 return(f() + g());
Gelegentlich kann es vorkommen, daß eine Funktionsdefinition oder ein
Funktionsaufruf aufgrund von geschweiften Klammern innerhalb von #if-
Anweisungen nicht erkannt wird. Genauso kann die Verwendung einer
Variablen fälschlicherweise als eine Definition gewertet werden.
Ein typedef-Name, der vor einer Präprozessor-Anweisung steht, wird
fälschlicherweise als eine globale Definition gewertet, z. B.
LDFILE *
#if AR16WR
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
cscope(1) cscope(1)
Präprozessor-Anweisungen können auch das Erkennen einer globalen Defi-
nition verhindern, z. B.
char flag
#ifdef ALLOCATESTORAGE
= -1
#endif
;
Eine Funktionsdeklaration innerhalb einer Funktion wird fälschlicher-
weise als Funktionsaufruf gewertet, z. B. wird folgende Funktionsde-
klaration fälschlich als Aufruf von g() erkannt:
f()
{
void g();
}
cscope erkennt C++-Klassen an ihrem Schlüsselwort. Es erkennt jedoch
nicht, daß auch struct eine Klasse ist. Genausowenig erkennt es die
Definitionen von "inline member"-Funktionen innerhalb einer Struktur.
Es erwartet außerdem kein Klassen-Schlüsselwort in einem typedef und
so wertet es fälschlicherweise in der folgenden Definition X als Defi-
nition:
typedef class X * Y;
Es erkennt auch keine Operator-Funktionsdefinitionen:
Bool Feature::operator==(const Feature & other)
{
...
}
DATEIEN
cscope.files
Standarddatei, die die Optionen -I, -p und -T und die Liste der
Quelldateien enthält; kann durch die Option -i anders gewählt
werden.
cscope.out
Querverweistabelle, die in das HOME-Verzeichnis geschrieben wird,
falls sie im aktuellen Verzeichnis nicht angelegt werden kann.
ncscope.out
Temporäre Datei, die die neue Querverweistabelle enthält, bevor
sie die alte Querverweistabelle ersetzt.
INCDIR
Standardverzeichnis für #include-Dateien (gewöhnlich
/usr/include).
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
cscope(1) cscope(1)
SIEHE AUCH
curses(3X), terminfo(4).
Kapitel "cscope" in "Leitfaden und Werkzeuge für die Programmierung
mit C".
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98