Debuginfod
Debuginfod is a service providing debug information over an HTTP API.
Installation
gdb automatically tries to download debug files if the DEBUGINFOD_URLS
environment variable is present.
libelf, a dependency of gdb, ships with /etc/profile.d/debuginfod.sh
and /etc/profile.d/debuginfod.csh
scripts that set the variable on login, so there is no need to install additional packages.
You can optionally install the debuginfod package which provides the debuginfod-find(1) utility. This package is required for debuginfod support in delve.
Usage
The tooling looks for debug symbols on the debuginfod servers specified in the DEBUGINFOD_URLS
environment variable. The value is a string of a space separated URLs.
For example:
DEBUGINFOD_URLS="https://debuginfod.archlinux.org/"
https://debuginfod.elfutils.org/
which works as a federated server and queries all available debuginfod servers.Now a debugger can fetch debug symbols without having to install the appropriate debug package.
$ gdb /usr/bin/i3
[...] Reading symbols from /usr/bin/i3... Downloading 1.56 MB separate debug info for /usr/bin/i3 Reading symbols from /home/user/.cache/debuginfod_client/29129d26dbe557d2b56daf90327f64f527304dc1/debuginfo... (gdb)
You can also do for example:
# coredumpctl gdb
And then inside gdb:
bt full
and you will have the debug-symbols of the last crashed app in your system.
See debuginfod-find(1) for usage.
Debugger support
Several debuggers support utilizing debuginfod to find debug symbol and source code listing.
Package | Status | Notes |
---|---|---|
gdb | Supported | |
delve | Supported | |
KDE Crash Report | Supported | |
valgrind | Supported |