> Projekt:Software-Sanierung > Werkzeuge > Trace-Tools-Nutzung

"Tools" zur dynamischen Aufrufverfolgung
- Nutzerdokumentation -

Autoren: Alexander Paschold, Rene Harder, Jan Picard
Datum: Oktober 2000
modifiziert: Uli Sacklowski
Datum: 23.11.00


 

Allgemein

Primärziel der hier vorgestellten Programme ist es, dynamisch zu ermitteln, wann und in welcher Reihenfolge Methoden bzw. Funktionen eines Programmsystems abgearbeitet werden. Zu diesem Zweck wird softwaregestützt direkt hinter jedem Methoden- bzw. Funktionskopf des Quelltextes des zu analysierenden Programmsystems eine fprintf-Anweisung eingefügt, die dafür sorgt, daß der Zeitpunkt, der Dateiname des Quelltextes und der Name der gerade in Abarbeitung befindlichen Methode bzw. Funktion in einer "Tracedatei" protokolliert werden. Weitere Programme sollen die Auswertung der erzeugten Tracedatei erleichtern, indem der Umfang der Tracedatei möglichst sinnvoll reduziert wird.

Der allgemeine Ablauf ist:
1. Aufbereitung der Quelldateien (Einfügung von fprintf-Anweisungen)
2. Erzeugung des abarbeitbaren Programms (compile, link unter der Borland-Umgebung)
3. Abarbeitung des Programms und Erzeugung von Tracedateien
4. Auswertung der Tracedateien
 

Speziell: RTK-Steuerprogramm

Beim RTK-Steuerprogramm werden für die vier Module (splib.dll, motors.dll, counters.dll, develop.exe) jeweils eigene Tracedateien erzeugt (trace.spl, trace.mtr, trace.ctr, trace.dev).
Die Namen der Tracedateien sind vom Programm her nicht änderbar.

modifizierte Quellen (ca. 0.6 MByte)
 

Die Programme im einzelnen

Es gibt ein Programm zur Aufbereitung der Quelldateien (tracer.exe) und vier Programme zur Auswertung der durch das aufbereitete Programm erzeugten Tracedateien.

In den nachfolgenden Beschreibungen entspricht die quelldatei einer bei der Abarbeitung des aufbereiteten (zu analysierenden) Programmes erzeugten Tracedatei.

Hinweis: Unter WindowsNT laufen die Programme nur im DOS-Fenster!

tracer
    Aufruf:  tracer quelldatei zieldatei
    Funktion:    Fügt die erwähnten fprintf-Anweisungen ein. Das erste Argument sollte
                       dementsprechend eine cpp-Datei sein. Das Ergebnis wird in der angegebenen
                       Zieldatei gespeichert. Die Quelldatei wird nicht modifiziert.

essenz
    Aufruf:   essenz quelldatei zieldatei
    Funktion:    Erstellt eine Auflistung aller in der Quelldatei (Tracedatei) vorkommenden
                       Methoden bzw. Funktionen und speichert diese in der Zieldatei. In der Zieldatei
                       erscheint jede Methode bzw. Funktion nur einmal. Die Quelldatei wird nicht
                       modifiziert.

mehrfach
    Aufruf:   mehrfach quelldatei zieldatei
    Funktion:    Faßt in der Quelldatei (Tracedatei) mehrfach direkt hintereinander auftretende
                       Methoden bzw. Funktionen zu einer Zeile zusammen und speichert das
                       Ergebnis in der Zieldatei. Die Quelldatei wird nicht modifiziert.

zyklen
    Aufruf:   zyklen quelldatei zieldatei
    Funktion:    Versucht Muster bzw. Zyklen in den aufeinanderfolgend auftretenden Methoden
                       bzw. Funktion in der der Quelldatei (Tracedatei) zu finden und entsprechend
                       zusammenzufassen. Das Ergebnis wird in der Zieldatei gespeichert. Voreingestellt
                       wird mit einer Zyklentiefe von 20 gearbeitet, d.h. es werden nur Zyklen erkannt
                       die aus maximal 20 aufeinanderfolgenden Methoden bzw. Funktionen bestehen.
                       Diese Zyklentiefe kann im Quelltext angepaßt werden: #define TIEFE ...
                     Die Quelldatei wird nicht modifiziert.

 vergleich
    Aufruf:   vergleich quelldatei referenzdatei zieldatei
    Funktion:    Vergleicht die Quelldatei (Tracedatei) zeilenweise mit der Referenzdatei
                       (Tracedatei) und speichert die Unterschiede der Quelldatei zur
                       Referenzdatei in der Zieldatei. Die Quelldatei und die Referenzdatei werden nicht
                        modifiziert.
                       (Sollte sich nach einem gefundenen Unterschied wieder selbst synchronisieren.)
 

 paschold@informatik.hu-berlin.de