Stacktrace

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Als Stacktrace („Stapel(speicher)zurückverfolgung“) 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 man die Aufrufkaskade, die zu dem Fehler führte, rekonstruieren.

Im Normalfall werden auf dem Stack vor allem die Rücksprungadressen der Prozeduren hinterlegt, die die jeweils nächste Prozedur aufgerufen haben. Es entsteht so eine Liste von Prozeduradressen, deren Rückverfolgung es erlaubt, den Pfad von Prozeduraufrufen vom Start des Programms bis hin zum aktuellen Zustand zu erkennen.

Besonders nützlich ist das im Fehlerfall. Eine Funktion produziert oftmals einen Fehler, wenn sie falsche Parameter erhält. Der Programmierer weiß aber nicht immer welche (Betriebssystem-)Funktion letzten Endes von seinem Programm aufgerufen wird. Anhand des Stacktraces kann er feststellen, an welcher Stelle seines Programms eine Funktion aufgerufen wurde, die zum Fehler führte.

Deshalb wird z. B. in 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.

Weblinks[Bearbeiten]