Als Stacktrace („Stapel(speicher)zurückverfolgung“) oder in .NET Stackwalk[1] bezeichnet man in der Informationstechnik die Ausgabe und Interpretation des Inhalts des Stacks. Ein Stacktrace wird meist zu Diagnosezwecken im Falle eines Programmabsturzes erstellt, denn damit kann die Aufrufkaskade, die zu dem Fehler führte, rekonstruiert werden.

Auf dem Stack werden u. a. die Rücksprungadressen zu den Positionen im Programm hinterlegt, von denen aus Prozeduren aufgerufen wurden. So entsteht eine Liste von Prozeduradressen, deren Rückverfolgung es erlaubt, den Pfad von Prozeduraufrufen vom Start des Programms bis hin zum aktuellen Zustand zu erkennen. Im Fehlerfall kann sich dies als hilfreich erweisen, um die aufrufende Prozedur und verwendete Übergabeparameter ausfindig zu machen.

Aus diesem Grund wird beispielsweise unter Linux nach einer Kernelpanik standardmäßig ein Stacktrace ausgegeben.

Stacktrace in Java

Bearbeiten

In der Programmiersprache Java ist der Stacktrace fester Sprachbestandteil und mit dem Konzept der Exceptionbehandlung verbunden:

try {
  doSomething();
} catch(Exception exc) {
  exc.printStackTrace();
}

Die Ausgabe des Stacktraces sieht dann beispielsweise wie folgt aus:

java.lang.ArrayIndexOutOfBoundsException: 3
  at example.common.TestTry.execute(TestTry.java:17)
  at example.common.TestTry.main(TestTry.java:11)

Es wird also kein Hexdump mit Registerinhalten ausgegeben, sondern der Stacktrace als Text. Diese Informationen ermöglichen es dem Programmierer, einen Fehler, der während des Programmablaufs auftritt, schneller zu lokalisieren und zu beheben.

Einzelnachweise

Bearbeiten
  1. https://technet.microsoft.com/en-us/dd392323(v=vs.85).aspx?

📚 Artikel Terkait di Wikipedia

JavaScript

gesonderte Error-Objekte zur Verfügung, die neben der Fehlermeldung auch einen Stacktrace und weitere Zusatzinformationen transportieren können. Um diese Vorteile

Aufrufstapel

Behebung des Fehlers vereinfachen sollen. Dazu gehört häufig ein sogenannter Stacktrace, der die Hierarchie des Aufrufstapels zum Zeitpunkt des Fehlers widerspiegelt

Kernel panic

Laien unverständlich. Ein Entwickler kann jedoch unter Umständen aus dem Stacktrace, der die Aufrufkette bis zum Auftreten des Fehlers enthält, oder den Inhalten

Stapelspeicher

Warteschlange entspricht. Feld (Datentyp) Liste (Datenstruktur) Floodfill Deque Stacktrace Patent DE1094019: Verfahren zur automatischen Verarbeitung von kodierten

Julia (Programmiersprache)

Paketladezeiten und ein neuer Parser mit besseren Fehlermeldungen und verbesserter Stacktrace-Darstellung. Julia 1.11.0 wurde am 7. Oktober 2024 veröffentlicht (stabiles

GNU Debugger

Möglichkeiten zur Ablaufverfolgung wie Breakpoints oder die Ausgabe des Stacktrace und ermöglicht ein Eingreifen in die Ausführung von Programmen. GDB ermöglicht

Entity Framework

TransactionScope()) { // Der TransactionScope sucht den neuesten Context auf dem // Stacktrace und verlinkt sich automatisch mit diesem try { // Bearbeitung von Entities

Fehlerbericht

Informationen enthalten sein können Daten eines Debuggers bzw. einen Stacktrace ein Dokument, das geöffnet (geladen) wurde Zusätzlich sollte der Benutzer