libunwind is a portable and efficient C API for determining the current call chain of ELF program threads of execution and for resuming execution at any point in that call chain. The API supports both local (same process) and remote (other process) operation.
The API ise useful in a number of applications, including but not limited to the following.
Program introspection: Either for error messages showing a back trace of the call chain leading to a problem or for performance monitoring and analysis.
Debugging: Whether the debugging and analysis of the call chain of a remote program or the post-mortem analysis of a coredump.
Language runtime exception handling libunwind: optionally provides an alternative implementation of the Itanium exception handling ABI used by many popular toolchains.
Alternative setjmp()/longjmp(): libunwind optionally provides an alternative implementation of the setjmp()/longjmp() functionality of the C standard library.
        
        
            
 Homepage
            
 Download
        
         Recent Releases
        
          1.8.123 Feb 2024 06:05
          
             minor feature:
             lt;p gt;Small release of libunwind 1.8. lt;/p gt;.
lt;p gt;One of the functional changes is that the testsuite is now installed with a  lt;code gt;make install lt;/code gt;, which may affect downstream packagers. By default these executables are installed in  lt;code gt; libexecdir /libunwind lt;/code gt; where  lt;code gt; libexecdir lt;/code gt; defaults to  lt;code gt; pre /libexec lt;/code gt;, but all this can be set explicitly though arguments to  lt;code gt;configure lt;/code gt;. lt;/p gt;.
lt;h2 gt;What's Changed lt;/h2 gt;.
lt;ul gt;.
lt;li gt; lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2097459071" data-permission-text="Title is private" data-url="https://github.com/libunwind/libunwind//713" data-hovercard-type="" data-hovercard-url="/libunwind/libunwind//713/hovercard" href="https://github.com/libunwind/libunwind//713" gt;#713 lt;/a gt; by  lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cshung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cshung" gt;@cshung lt;/a gt; in  lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2112597060" data-permission-text="Title is private" data-url="https://github.com/libunwind/libunwind//717" data-hovercard-type="pull_request" data-hovercard-url="/libunwind/libunwind/pull/717/hovercard" href="https://github.com/libunwind/libunwind/pull/717" gt;#717 lt;/a gt; lt;/li gt;.
lt;li gt;Add do-release script by  lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bregma/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bregma" gt;@bregma lt;/a gt; in  lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2145091373" data-permission-text="Title is private" data-url="https://github.com/libunwind/libunwind//725" data-hovercard-type="pull_reque
          
       
       
          1.8.030 Jan 2024 11:18
          
             minor feature:
             What's Changed
    Improve unwinding through a bad function pointer on x86_64. by @EmployedRussian in #449
    Fix single-bit-bitfield-constant-conversion warning by @am11 in #457
    Remove mailing list information by @bkmgit in #463
    Fix UMRs indicated by valgrind (x86_64) by @peadar in #454
    Remove unneeded check by @bkmgit in #466
    fix byte_order_is_valid function logic by @he7850 in #445
    Use size_t to match R.H.S by @am11 in #455
    Move get_proc_info_in_range under dwarf/ by @am11 in #460
    Bump actions/checkout@v2 to @V3 by @bregma in #469
    dwarf_find_unwind_table: Find load_base correctly when current segment does not start at segbase by @BobIsOnFire in #456
    Add introspection for march=armv8-a+sve by @am11 in #471
    Add refined read-only permissions to CI actions by @bregma in #476
    Conditionally handle differing struct fpreg layout on FreeBSD armv7 by @rcmcdonald91 in #478
    src/Gtrace: remove unguarded print() calls by @rossburton in #483
    Linux: Make get_elf_image guaranteed AS-safe by @bertwesarg in #485
    Rework CI-unix.yml to add clang by @bregma in #472
    Provide syscall wrappers for mmap and munmap by @bertwesarg in #486
    Allow to use a custom dl_iterate_phdr implementation by @bertwesarg in #490
    aarch64: unw_step() validates address before calling dwarf_get by @he7850 in #494
    doc: Add manpage for unw_set_iterate_phdr_function by @bertwesarg in #497
    Fix unused variable warning by @michalbiesek in #498
    Provide AS-safe allocator to LZMA by @bertwesarg in #484
    Rework register load in aarch64_local_resume() by @bregma in #503
    Add manpage for libunwind-coredump by @bregma in #496
    Make Debug() signal-safe by @bregma in #506
    Handle edge case in aarch64 tdep_trace() by @bregma in #504
    Update to rc2 by @bkmgit in #468
    don't override sp on arm and mips64 by @kasperk81 in #481
    Fix NO_PTRACE_TEST conditions by @bregma in #500
    Skip test-ptrace tests if ptrace() returns an err