Ablaufverfolgung
Vorlage:Hinweisbaustein Vorlage:Hinweisbaustein Die Ablaufverfolgung ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) bezeichnet in der Programmierung eine Funktion zur Analyse von Programmen oder zur Fehlersuche in ihnen. Es handelt sich dabei um einen Cross-Cutting Concern.<ref>TracingBook - TracingWiki. 24. Februar 2009, archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 24. Februar 2009; abgerufen am 3. März 2024. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.</ref>
Dabei wird z. B. bei jedem Einsprung in eine Funktion, sowie bei jedem Verlassen eine Meldung ausgegeben, sodass der Programmierer mitverfolgen kann, wann und von wo welche Funktion aufgerufen wird. Die Meldungen können auch die Argumente an die Funktion enthalten.
Bei der Programmierung in Assemblersprache besteht mithilfe der Ablaufsteuerung (Tracer) die Möglichkeit, die Maschinenbefehle einzeln auszuführen und dabei die Register, den Stack, Speicherauszüge oder bestimmte Speicherstellen zu überwachen.<ref>8088 Assembler and Tracer Toolkit. (PDF) Donald Bren School of Information & Computer Sciences, abgerufen am 7. August 2019 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref></ref>
Zusammen mit weiteren Diagnose-Ausgaben lässt sich so der Programmablauf eines fehlerhaften Programmes häufig sehr schnell bis zu der fehlerverursachenden Funktion zurückverfolgen.
In Multithreading-Umgebungen ist die Ablaufverfolgung hilfreicher als Debuggen mit Setzen von Haltepunkten, da hierbei der aktuelle Thread nicht angehalten wird, was ansonsten dazu führen würde, dass der Kontext verfälscht wird und somit der gesuchte Programmfehler u. U. nicht wie gewünscht reproduziert werden kann.
Im Kontext von Observability wird Ablaufverfolgung neben Monitoring und Logging als eine der drei Säulen betrachtet. Eine Vielzahl von Tools ermöglichen das Tracing von Produktivsystemen<ref>Janes, A., Li, X., & Lenarduzzi, V. (2023). Open tracing tools: Overview and critical comparison. Journal of Systems and Software, 204, 111793.</ref>. Das Tracing in Produktivsystemen erzeugt jedoch signifikanten Overhead,<ref>Reichelt, D. G., Kühne, S., & Hasselbring, W. (2021). Overhead Comparison of OpenTelemetry, inspectIT and Kieker. Symposium on Software Performance, 2024.</ref> so dass beim Betrieb von Software eine Abwägung zwischen der Genauigkeit der Ablaufverfolgung (bspw. durch Auswahl der erfassten Methoden) und dem erzeugten Overhead getroffen werden muss.
Siehe auch
Einzelnachweise
<references />