|This article does not cite any references or sources. (December 2009)|
Programmers commonly use stack tracing during interactive and post-mortem debugging. End-users may see a stack trace displayed as part of an error message, which the user can then report to a programmer.
A stack trace allows tracking the sequence of nested functions called - up to the point where the stack trace is generated. In a post-mortem scenario this extends up to the function where the failure occurred (but was not necessarily caused). Sibling function calls do not appear in a stack trace.
As an example, the following Python program contains an error.
1 def a(): 2 b() 3 4 def b(): 5 c() 6 7 def c(): 8 error() 9 10 a()
Running the program under the standard Python interpreter produces the following error message.
Traceback (most recent call last): File "tb.py", line 10, in <module> a() File "tb.py", line 2, in a b() File "tb.py", line 5, in b c() File "tb.py", line 8, in c error() NameError: global name 'error' is not defined
The stack trace shows where the error occurs, namely in the
c function. It also shows that the
c function was called by
b, which was called by
a, which was in turn called by the code on line 10 (the last line) of the program.
|This computer science article is a stub. You can help Wikipedia by expanding it.|