mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-25 00:51:21 +00:00
d1f32a3e5d
Most contributors copy an existing port when writing their own so reduce the number of bad examples in the tree.
25 lines
1.2 KiB
Plaintext
25 lines
1.2 KiB
Plaintext
The primary goal of this project is to define a portable and efficient
|
|
C programming interface (API) to determine the call-chain of a program.
|
|
The API additionally provides the means to manipulate the preserved
|
|
(callee-saved) state of each call-frame and to resume execution at any
|
|
point in the call-chain (non-local goto). The API supports both local
|
|
(same-process) and remote (across-process) operation. As such, the API
|
|
is useful in a number of applications. Some examples include:
|
|
|
|
o exception handling
|
|
The libunwind API makes it trivial to implement the stack-manipulation
|
|
aspects of exception handling.
|
|
o debuggers
|
|
The libunwind API makes it trivial for debuggers to generate
|
|
the call-chain (backtrace) of the threads in a running program.
|
|
o introspection
|
|
It is often useful for a running thread to determine its call-chain.
|
|
For example, this is useful to display error messages (to show how
|
|
the error came about) and for performance monitoring/analysis.
|
|
o efficient setjmp()
|
|
With libunwind, it is possible to implement an extremely efficient
|
|
version of setjmp(). Effectively, the only context that needs to be
|
|
saved consists of the stack-pointer(s).
|
|
|
|
WWW: http://www.nongnu.org/libunwind/
|