Provided by: systemtap-doc_4.6-2_amd64 bug

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

                                                                        WARNING::DEBUGINFO(7stap)