"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