Tracing
(engl.)Wikipedia unterscheidet zwischen:
- Event Logging
- diese Informationen sind für den Systemabministrator bestimmt, diese sollen nur relevante höhrere abstrakte Ereignisse überwachen (klassisch: UNIX-Syslog)
- Software Tracing
-
- dient zur Information der Entwicker
- Tracepoints sind eine gute Dokumentation des Programmes
Instrumentierung bezeichnet das versehen mit Code zur Überwachung (Wikipedia)
ggf. kann dies auch durch ein Codeanalyseprogramm erfolgen)
Tracemechanismus sollen:
- nicht viel kosten
- nach Aspekten ein- und ausschaltbar sein (ausgeschaltete Tracepoints nichts (oder fast nichts) kosten
Nutzen
- Rückkopplung zur Spezifikation
- Traces aus einem System/Programm sind die empirischen Spuren, die auch in der Spezifikation erklärt werden sollten. → Rückkopplung in UML-Spezifikationen, ggf. zusätzliche Annotationen in Statecharts, Aktivitäts-Diagramme (Idee Juli 2011)
- Nachweis der Testüberdeckung
-
Tests sollen so sein, dass möglichst viel Code durchlaufen wird, und nicht erst im Einsatz Codestellen zum ersten mal durchlaufen werden.
- Ablaufverfolgung: Jeder Basicblock wird getraced
-
- Detailiertes Wissen über Verzweigungswahrscheinlichkeiten
- Rekonstruierbarkeit von Umständen bei der Fehlersuche, vorallem bei Zeitkritischen Fehlern
- Performanceanalyse:
-
- Korrelation von Applikationscode zu Betriebssystemereignissen
- Man weiss dann,welche Mechanismen wie beanbrucht werden und kann optimieren
- Analyse der Rechtzeitigkeit bei Echtzeitsystemen
- Events, die den Anfang und das Ende einer Aktivität darstellen, können zu Antwortzeitdauerstatistiken ausgewertet werden.
Begriffe
statische Tracepoints werden von den Entwicklern an den interessanten Stellen plaziert.
Diese können zum Kernel-ABI (Application Binary-Interface) definiert werden. ([JC200904])
Tracingmechanismen:
- DTrace von Sun
- FTrace
-
Beschreibung in LWN Part1 und Part2
Zusammenhang mit perf ?
Ftrace - eLinux.org
trace-cmd: A front-end for Ftrace [LWN.net]
trace-cmd-report(1)
- LTTng Linux Trace Toolkit
- in Kernel- und Userspace
- ETW-MSWindows Eventtracing
- Light weight eventtracing in Genode
Bedenken zu Tracepoints
- Auswirkung auf Performance - TP sind naturgemäß an den kritischten Stellem plaziert
- Kosten eines inaktiven Tracepoints fast 0 durch run-time-codepatching [JC200904].
Trick: Platz für Tracepoint kann mit nop-Instruktionen freigehalten werden, bei der Aktivierung kann dann dort der Funktioncall eintragen werden.
(Quelle ???)
- Änderungsstabilität - im Kern und in Auswertungsprogrammen [JC200904]
- Das Ändern/Verbessern um die Tracepoints herum ist eine Herausforderung
Literatur:
- [JC200904] On the value of static tracepoints
Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber