JMÉNO

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

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
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
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
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
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
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 <sys/sdt.h> 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->foo->bar mělo by být možné použít zápis @cast(var,"foo","foo.h")->foo->bar čímž dojde k syntéze ladicích informací z hlavičkových souborů.

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ÉŽ

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