warning::debuginfo(7stap) — Linux manual page


WARNING::DEBUGINFO(7stap)                          WARNING::DEBUGINFO(7stap)

NAME         top

       warning::debuginfo - systemtap missing-debuginfo warnings

DESCRIPTION         top

       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 automat‐
       ically download correct debuginfo from servers run by you, your orga‐
       nization, 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, in‐
              cluding a confusingly named kernel-debug (an alternative ker‐
              nel, 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.

              On some systems, binaries may be compiled with a subset of de‐
              buginfo useful for function tracing and backtraces.  This
              'Minidebuginfo' is a xz compressed section labeled .gnu_debug‐
              data.  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 re‐
              lies on elfutils version 0.153 or later.

       unnecessary debuginfo
              In some cases, a script may be altered to avoid requiring de‐
              buginfo.  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 (frag‐
              ile) tapset functions to extract system call arguments.  An‐
              other option is use of compiled-in instrumentation such as
              kernel tracepoints or user-space <sys/sdt.h> markers in li‐
              braries 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.


       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         top

       http://elfutils.org/ ,
       https://sourceware.org/elfutils/Debuginfod.html ,

COLOPHON         top

       This page is part of the systemtap (a tracing and live-system
       analysis tool) project.  Information about the project can be found
       at ⟨https://sourceware.org/systemtap/⟩.  If you have a bug report for
       this manual page, send it to systemtap@sourceware.org.  This page was
       obtained from the project's upstream Git repository
       ⟨git://sourceware.org/git/systemtap.git⟩ on 2020-09-18.  (At that
       time, the date of the most recent commit that was found in the repos‐
       itory was 2020-09-18.)  If you discover any rendering problems in
       this HTML version of the page, or you believe there is a better or
       more up-to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not part
       of the original manual page), send a mail to man-pages@man7.org


Pages that refer to this page: error::dwarf(7stap)error::pass2(7stap)warning::buildid(7stap)warning::symbols(7stap)