Update in 2025-11.
The main usage of stack unwinding is:
- To obtain a stack trace for debuggers, crash reporters, profilers, garbage collectors, etc.
- To implement C++ exceptions (Itanium C++ ABI) using personality routines and language-specific data area. See C++ exception handling ABI
Some people use "stack walking" to refer to obtaining a stack trace, while "stack unwinding" refers to an enhanced operation that also recovers callee-saved registers. In this post, we don't make the distinction.