---
name: "warning::debuginfo"
section: "7stap"
platform: "linux"
package: "systemtap"
version: "5.6-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/warning::debuginfo"
---

# warning::debuginfo(7stap)

systemtap missing-debuginfo warnings

## NAME

warning::debuginfo - systemtap missing-debuginfo warnings

## DESCRIPTION

For many symbolic probing operations, systemtap needs DWARF debuginfo for the relevant binaries.  This often includes resolving function/statement probes, or $context variables in related handlers.  DWARF debuginfo is created by the compiler when using *CFLAGS -g*, and may be found in the original binaries built during compilation, or may have been split into separate files.  The *SYSTEMTAP\_DEBUGINFO\_PATH* environment variable affects where systemtap looks for these files.

If your operating system came from a distributor, check with them if debuginfo packages or variants are available.  If your distributor does not have debuginfo-equipped binaries at all, you may need to rebuild it.

Systemtap uses the  *elfutils* library to process ELF/DWARF files.  The version of elfutils used by systemtap is the number after the slash in the  *-V* output:

```
% stap -V
Systemtap translator/driver (version 4.2/0.178, rpm 4.2-1.fc30)
Copyright (C) 2005-2019 Red Hat, Inc. and others
[...]
```

This indicates systemtap version 4.2 with elfutils version 0.178.

New enough versions of elfutils (0.178+) enable systemtap to automatically download correct debuginfo from servers run by you, your organization, and/or someone on the public internet.  Try:

```
% export DEBUGINFOD_URLS=https://debuginfod.elfutils.org/
% export DEBUGINFOD_PROGRESS=1   # for progress messages, if you like
```

and rerun systemtap.  It might just work.  If it doesn't, read on.

- kernel debuginfo

  For scripts that target the kernel, systemtap may search for the *vmlinux* file created during its original build.  This is distinct from the boot-loader's compressed/stripped *vmlinuz* file, and much larger.  If you have a hand-built kernel, make sure it was built with the *CONFIG\_DEBUG\_INFO=y* option.  Some Linux distributions may include several kernel variants, including a confusingly named *kernel-debug* (an alternative kernel, with its own *kernel-debug-debuginfo* package), which is not the same thing as the *kernel-debuginfo* (DWARF data for the base *kernel*). The *stap-prep* program can help install the right set.

- process debuginfo

  For scripts that target user-space, systemtap may search for debuginfo. If you have hand-built binaries, use *CFLAGS=-g -O2* to compile them.

- minidebuginfo

  On some systems, binaries may be compiled with a subset of debuginfo useful for function tracing and backtraces.  This 'Minidebuginfo' is a xz compressed section labeled .gnu\_debugdata.  Support for minidebuginfo relies on elfutils version 0.156 or later.

- compressed debuginfo

  On some systems, debuginfo may be available, but compressed into *.zdebug\_\** sections.  Support for compressed debuginfo relies on elfutils version 0.153 or later.

- unnecessary debuginfo

  In some cases, a script may be altered to avoid requiring debuginfo. For example, as script that uses *probe syscall.\** probes could try instead *probe nd\_syscall.\** (for non-DWARF syscall): these work similarly, and use more intricate (fragile) tapset functions to extract system call arguments.  Another option is use of compiled-in instrumentation such as kernel tracepoints or user-space *\<sys/sdt.h\>* markers in libraries or executables, which do not require debuginfo. If debuginfo was required for resolving a complicated *$var-\>foo-\>bar* expression, it may be possible to use *@cast(var,"foo","foo.h")-\>foo-\>bar* to synthesize debuginfo for that type from a header file.

## OTHER AUTOMATION

On some platforms, systemtap may advise what commands to run, in order to download needed debuginfo.  Another possibility is to invoke systemtap with the *--download-debuginfo* flag, which uses ABRT. The *stap-prep* script included with systemtap may be able to download the appropriate kernel debuginfo.  Another possibility is to install and use a *stap-server* remote-compilation instance on a machine on your network, where debuginfo and compilation resources can be centralized.  Try the *stap --use-server* option, in case such a server is already running.

## SEE ALSO

```
gcc(1),
stap(1),
stappaths(7),
stap-server(8),
stap-prep(1),
strip(1),
warning::symbols(7stap),
error::dwarf(7stap),
error::reporting(7stap),
error::contextvars(7stap),
debuginfod(8),
http://elfutils.org/,
https://sourceware.org/elfutils/Debuginfod.html,
http://fedoraproject.org/wiki/Features/MiniDebugInfo
```
