Although stack traces may be generated anywhere within a program, they are mostly used to aid debugging by showing where exactly an error occurs. The last few stack frames often indicate the origin of the bug.
For example, the following Python program contains an error.
Running the program under the standard Python interpreter produces the following error message.
Traceback (most recent call last):
File "tb.py", line 10, in
File "tb.py", line 2, in a
File "tb.py", line 5, in b
File "tb.py", line 8, in c
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.