Backtrace

Als Stacktrace 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

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 auf Hochsprachniveau. Mit diesen Informationen hat ein Programmierer jedenfalls einiges in der Hand, um einen Fehler, der beispielsweise bei einem Kunden aufgetreten ist, recht schnell lokalisieren und beheben zu können. Die Angabe von Daten im Umfeld der Ausnahme ist allerdings hier eher mager. Im gezeigten Falle des Indexfehlers wird nur der Wert des Index angeben, der zum Fehler führte, keine weiteren Umgebungsdaten. Der datenmäßige Zustand des Programms ist meist aus anderen Ausgaben, Logdateien oder dergleichen oder einem Fehlerreport ableitbar.

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Backtrace — …   Википедия

  • backtrace — 1. noun A stack trace. 2. verb a) To examine a stack trace b) To find the cause of something by examining past events …   Wiktionary

  • Levenshtein-Distanz — Die Levenshtein Distanz zwischen zwei Zeichenketten ist die minimale Anzahl von Einfüge , Lösch und Ersetz Operationen, um die erste Zeichenkette in die zweite umzuwandeln. Benannt ist die Distanz nach dem russischen Wissenschaftler Wladimir… …   Deutsch Wikipedia

  • BMPx — Infobox Software name=BMPx caption=Beep Media Player 0.40 developer=BMP Development Team latest release version=0.40.14 latest release date=April, 2008 operating system=Linux, Unix like genre=Audio player license=GNU General Public License… …   Wikipedia

  • ALGOL 68C — The ALGOL68C computer programming language compiler was developed for the CHAOS OS for the CAP capability computer at Cambridge University in 1971 by Stephen Bourne and Mike Guy as a dialect of ALGOL 68. Other early contributors were Andrew D.… …   Wikipedia

  • Segmentation fault — A segmentation fault (often shortened to segfault) is a particular error condition that can occur during the operation of computer software. A segmentation fault occurs when a program attempts to access a memory location that it is not allowed to …   Wikipedia

  • Stack trace — A stack trace (also called stack backtrace or stack traceback) is a report of the active stack frames instantiated by the execution of a program.Although stack traces may be generated anywhere within a program, they are mostly used to aid… …   Wikipedia

  • Edinburgh IMP — is a development of ATLAS Autocode, initially developed around 1966 1969 at Edinburgh University, Scotland. IMP was a general purpose programming language which was used heavily for systems programming.Expressively, IMP is extremely similar to… …   Wikipedia

  • SIGILL — Infobox Computing signal description = Illegal instruction action = Abnormal termination of the process ILL ILLOPC | illegal opcode ILL ILLOPN | illegal operand ILL ADR | illegal addressing mode ILL ILLTRP | illegal trap ILL PRVOPC | privileged… …   Wikipedia

  • SIGFPE — Infobox Computing signal description = Erroneous arithmetic operation action = Abnormal termination of the process FPE INTDIV | Integer divide by zero FPE INTOVF | Integer overflow FPE FLTDIV | Floating point divide by zero FPE FLTOVF | Floating… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”