unw_backtrace - Man Page

return backtrace for the calling program

Synopsis

#include <libunwind.h>

int unw_backtrace(void **buffer, int size);
int unw_backtrace2(void **buffer, int size, unw_context_t *ctxt, int flag);

#include <execinfo.h>

int backtrace(void **buffer, int size);

Description

unw_backtrace() is a convenient routine for obtaining the backtrace for  the calling program. The routine fills up to size addresses in the array  pointed by buffer​. The routine is only available for local unwinding.

Note that many (but not all) systems provide a practically identical function  called backtrace(). The prototype for this function is usually obtained  by including the <execinfo.h> header file -- a prototype for  backtrace() is not provided by libunwind​. libunwind weakly  aliases backtrace() to unw_backtrace(), so when a program  calling backtrace() is linked against libunwind, it may end up  calling unw_backtrace().

In case you want to obtain the backtrace from a specific unw_context_t, you can call unw_backtrace2 with that context passing 0 for flag.  If the unw_context_t is known to be a signal frame (i.e., from the third argument  in a sigaction handler on linux), unw_backtrace2 can be used to collect  only the frames before the signal frame passing the UNW_INIT_SIGNAL_FRAME flag.

Return Value

The routine returns the number of addresses stored in the array pointed by  buffer​. The return value may be zero to indicate that no addresses were  stored.

See Also

libunwind(3libunwind), unw_step(3libunwind)

Author

David Mosberger-Tang
Email: dmosberger@gmail.com
WWW: http://www.nongnu.org/libunwind/​.

Info

29 August 2023 Programming Library