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

WinDbg

einschließlich kommentierter Beschreibung des Bluescreens, vollständigem Stack-Trace und Analyse des für den Absturz verantwortlichen Treibers. WinDbg unterstützt

JavaScript

verallgemeinern zu können. peterseliger.blogspot.de; 5. Juni 2014. JavaScript Stack Trace API in Google V8 Wiki, Stand 28. Juni 2010, abgerufen am 23. Februar

Erzeuger-Verbraucher-Problem

blockingQueue.put(value); } } catch (InterruptedException e) { e.printStackTrace(); } }); Thread consumerThread = new Thread(() -> { try { for (;;) { int

Ausnahmebehandlung

restlichen Ausnahmefehler ab e.printStackTrace(); } catch (Throwable t) { // Das hier fängt wirklich alles ab t.printStackTrace(); } finally { // Ob Exception

Bitnami

die Stacks (Deutsch: Stapel) genannten Pakete auch die notwendige Infrastruktur, um die Anwendung zu betreiben. So enthält beispielsweise der Stack zur

Obfuskation (Software)

Fehlermeldungen zu erstellen, da Standard-Fehlermeldungen wie beispielsweise Stack-Traces kaum noch Aussagekraft besitzen und den Entwicklern keine Rückschlüsse

Dynatrace

the Answer for 'Single Panel' Observability for Cloud Native. In: The New Stack. 13. Februar 2020, abgerufen am 16. Januar 2021 (amerikanisches Englisch)

Jessica Lundy

Wahrheit über Männer und Frauen (Denial) 2003: Without a Trace – Spurlos verschwunden (Without a Trace, Fernsehserie, Folge 1x16 Schatten der Vergangenheit)