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

# [JMÉNO](#JM)

warning::debuginfo - varování ohledně chybějících ladicích informací

# [POPIS](#POPIS)

Pro mnoho symbolických sondážních operací potřebuje systemtap ladicí informace DWARF generované kompilátorem při použití *CFLAGS -g*. Obvykle jsou ladicí informace potřeba pro nalezení sond pro funkce, příkazy, nebo kontextové proměnné. Ladicí informace se mohou nacházet buď přímo v binárních souborech, nebo mohou být odděleny do samostatných souborů, které se hledají v závislosti na nastavení proměnné prostředí *SYSTEMTAP\_DEBUGINFO\_PATH*.

Ověřte zda jsou pro vaši distribuci dostupné "debuginfo" balíčky s ladicími informacemi. Pokud tyto balíčky k dispozici nemáte, může být nutné programy, které chcete analyzovat, znovu sestavit tak, aby obsahovaly také ladicí informace DWARF.

Systemtap používá knihovnu *elfutils* ke zpracování ELF/DWARF souborů. Použitá verze elfutils odpovídá číslu za lomítkem ve výstupu příkazu *stap*-V output:

```
% stap -V
Systemtap translator/driver (version 2.3/0.156, rpm 2.3-1.fc19)
Copyright (C) 2005-2014 Red Hat, Inc. and others
[...]
```

Ukazuje, že systemtap byl sestaven s elfutls verze 0.156.

[ladicí informace jádra](#ladic)

Pro skripty, které analyzují linuxové jádro, může systemtap potřebovat příslušný soubor *vmlinux* vzniklý při sestavování jádra. Poznamenejme, že zde nejde o zkomprimovaný soubor *vmlinuz* , na který se odkazuje boot loader, a ze kterého byly ladicí informace odstraněny. Soubor vmlinux je značně větší, než vmlinuz. Pokud sestavujete jádro ručně, ujistěte se, že máte zapnutou volbu *CONFIG\_DEBUG\_INFO=y*. Navíc některé linuxové distribuce mohou poskytovat více variant jádra a pro každou variantu samostatný balíček s ladicími informacemi. Příkladem takové varianty je *kernel-debug*, varianta s matoucím názvem, která má vlastní *kernel-debug-debuginfo* balíček (což není totéž jako *kernel-debuginfo* obsahující ladicí informace pro balíček *kernel*). Program *stap-prep* může pomoci s instalací správných balíčků.

[ladicí informace pro uživatelské procesy](#ladic~2)

Pro SystemTap skripty, které analyzují uživatelské procesy, může systemtap potřebovat příslušné ladicí informace také. Pokud analyzujete ručně sestavený program, použijte pro jeho překlad *CFLAGS=-g -O2 .*

[minidebuginfo](#minidebuginfo)

Na některých systémech mohou binární soubory obsahovat podmnožinu obvyklých ladicích informací pro sledování funkcí a generovaní výpisů 'backtrace'. Tohle tzv. 'MiniDebugInfo' představuje xz zkomprimovanou ELF sekci .gnu\_debugdata. MiniDebugInfo je podporováno elfutils 0.156, nebo novější verze.

[komprimované debuginfo](#komprimovan)

Na některých systémech mohou být ladicí informace dostupné v komprimované formě v rámci sekcí *.zdebug\_\**. Elfutils 0.153 a novější verze obsahují podporu podporu pro tyto komprimované ladicí informace.

[nepotřebné ladicí informace](#nepot)

V některých případech lze skript upravit tak, aby ladicí informace nepotřeboval. Například skript, který používá *probe syscall.\** lze obvykle přepsat na skript založený na *probe nd\_syscall.\**, non-DWARF sondách, které používají složitější (ale také křehčí) mechanizmus pro přístup k argumentům systémových volání. Další možností je použití zakompilovaných značek typu 'tracepoint', které jsou dostupné v linuxovém jádře, nebo využít značky *&lt;sys/sdt.h&gt;* pro uživatelské procesy. Ty nejsou založeny na ladicích informacích. Pokud jsou ladicí informace potřebné k vyhodnocení složitějších výrazů typu *$var-&gt;foo-&gt;bar* mělo by být možné použít zápis *@cast(var,"foo","foo.h")-&gt;foo-&gt;bar* čímž dojde k syntéze ladicích informací z hlavičkových souborů.

# [AUTOMATIZACE](#AUTOMATIZACE)

Na některých platformách může systemtap doporučit, které příkazy spustit pro stažení ladicích informací. Také je možné použít přepínač *--download-debuginfo* flag. Program *stap-prep* může být schopen potřebné balíčky stáhnout a nainstalovat. Další možností je použít *stap-server* pro kompilaci na vzdáleném stroji, kde mohou být ladicí informace centralizovány. V tomto případě použijte volbu *stap --use-server*.

# [VIZ TÉŽ](#VIZ_T)

```
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),
http://elfutils.org/,
http://fedoraproject.org/wiki/Features/MiniDebugInfo
```

---

Document: warning::debuginfo(7stap) from systemtap 5.6-r0 (Chainguard OS)
Source: https://sourceware.org/git/systemtap.git
