ELFUTILS DEBUGINFOD

elfutils debuginfod is a client/server in elfutils 0.178+ that automatically distributes elf/dwarf/source-code from servers to clients such as debuggers across HTTP.

servers

Anyone may run debuginfod servers for their private purposes. Software publishers are invited to run public servers for use by the community. Heck, anyone may run servers based on redistributable artifacts from others. To configure a client tool to use them, simply add any of the server URLs to your $DEBUGINFOD_URLS environment variable (space-separated).

private servers

To run your own server, identify the directories containing raw build files, or RPM packages, or DEB packages, or any combination, and launch debuginfod into the background.
% debuginfod [-F $files] [-R $rpms] [-U $debs] &
% export DEBUGINFOD_URLS=http://localhost:8002/
% export DEBUGINFOD_PROGRESS=1   # for optional download progress reporting
        
Or use systemd.

public servers

The following public services currently [2020-12] welcome users.
The first one federates to all the others, so
% export DEBUGINFOD_URLS="https://debuginfod.elfutils.org/ $DEBUGINFOD_URLS"
% export DEBUGINFOD_PROGRESS=1    # for optional download progress reporting
        
will get you to all of them. If your distro offers a server, you may prefer to link to that one directly, for authoritative service.


serverstatusoperatordistropackagesarchitectures
https://debuginfod.elfutils.org/ online fche@redhat.com federates all following trusted servers
https://debuginfod.systemtap.org/ experimental fche@redhat.com recent fedora, centos, rhel ubi8, ubuntu, debian bash binutils boost busybox coreutils dyninst elfutils gcc git glibc httpd kernel ncurses procps python samba stress sudo systemd systemtap util-linux tcl zsh mostly x86_64
https://debuginfod.opensuse.org/ experimental mliska@suse.cz opensuse TW all x86_64
https://debuginfod.s.voidlinux.org/ official ericonr@disroot.org void linux most most
https://debuginfod.debian.net/ official sergiodj@debian.org debian linux main distributions amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x


clients

debuginfod client-side support is under construction or already available in a variety of binary-related utilities. We summarize current upstream status [2021-02] below. Note that distros may lag behind upstream developments.


toolstatus
elfutils released in version 0.178, 2019-11
systemtap automatic via elfutils
dwarves automatic via elfutils
dwgrep automatic via elfutils
ltrace automatic via elfutils
libabigail automatic via elfutils
binutils released in version 2.34, 2020-02
gdb released in version 10.1, 2020-10
dyninst merged for next release
valgrind released in version 3.17.0, 2021-03
annocheck released in version 9.03, 2020-01
delve help wanted
lldb in progress kkleine@redhat.com
perf released in linux 5.10, 2021-01
systemd-coredumpd help wanted
retrace/abrt/faf in progress amerey@redhat.com
vtune help wanted

smoke tests

Print a stack traceback of a live process:
% eu-stack -v -p $$
PID 3063417 - process
TID 3063417:
#0  0x0000151bf53f2e3c     __GI___sigsuspend - /usr/lib64/libc-2.31.so
../sysdeps/unix/sysv/linux/sigsuspend.c:26:10
#1  0x000055fd754de91b - 1 signal_suspend - /usr/bin/zsh
/usr/src/debug/zsh-5.8-1.fc32.x86_64/Src/signals.c:393:11
#2  0x000055fd754a8f7b - 1 zwaitjob - /usr/bin/zsh
/usr/src/debug/zsh-5.8-1.fc32.x86_64/Src/jobs.c:1603:6
[...]
#8  0x000055fd754a4bd6 - 1 zsh_main - /usr/bin/zsh
/usr/src/debug/zsh-5.8-1.fc32.x86_64/Src/init.c:1781:6
#9  0x0000151bf53dd042 - 1 __libc_start_main - /usr/lib64/libc-2.31.so
../csu/libc-start.c:308:16
#10 0x000055fd754689fe - 1 _start - /usr/bin/zsh
        
Fetch a source file:
% cat `debuginfod-find source d278249792061c6b74d1693ca59513be1def13f2 \
       /usr/src/debug/glibc-2.31-48-g64246fccaf/wctype/iswctype.c`
[source code]
        

more readings