On Fri, Apr 1, 2016 at 4:34 PM Mark Wielaard <mjw@redhat.com> wrote:

It does have documentation, but it is indeed not as full as we would
like. Please take a look at libdw.h and libdwfl.h

For someone who is familiar with ELF innards maybe, but for someone who just wants backtrace and symbol names not so much :-)
 
If you really need an in-process unwinder then I would recommend you
take a look at the libbacktrace from the GCC project:
https://gcc.gnu.org/viewcvs/gcc/trunk/libbacktrace/

I really do. Not only for logging after segmentation fault, but also for watchdog feature: print stack trace if program stuck somewhere and could not rewind SIGALRM timeout in time.

I have found standalone fork of libbacktrace (https://github.com/ErwanLegrand/libbacktrace) and will try it. Thank you. 
 
If you just want to get a good backtrace when you get a SIGSEGV or other
fatal signal it makes sense to just call eu-stack -P TID on yourself.
fork and exec are signal safe. And then you don't have to try to deal
with a possibly corrupt program.

It would be fine for SIGSEGV case, but not for watchdog (SIGALRM) case. 

Thanks again for rapid answer!