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 reportingOr 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 reportingwill get you to all of them. If your distro offers a server, you may prefer to link to that one directly, for authoritative service.
server | status | operator | distro | packages | architectures |
---|---|---|---|---|---|
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.
tool | status |
---|---|
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]