WARNING::DEBUGINFO(7stap) WARNING::DEBUGINFO(7stap) JMENO warning::debuginfo - varovani ohledne chybejicich ladicich informaci POPIS Pro mnoho symbolickych sondaznich operaci potrebuje systemtap ladici informace DWARF generovane kompilatorem pri pouziti CFLAGS -g. Obvykle jsou ladici informace potreba pro nalezeni sond pro funkce, prikazy, nebo kontextove promenne. Ladici informace se mohou nachazet bud primo v binarnich souborech, nebo mohou byt oddeleny do samostatnych souboru, ktere se hledaji v zavislosti na nastaveni promenne prostredi SYSTEMTAP_DEBUGINFO_PATH. Overte zda jsou pro vasi distribuci dostupne "debuginfo" balicky s ladicimi informacemi. Pokud tyto balicky k dispozici nemate, muze byt nutne programy, ktere chcete analyzovat, znovu sestavit tak, aby obsahovaly take ladici informace DWARF. Systemtap pouziva knihovnu elfutils ke zpracovani ELF/DWARF souboru. Pouzita verze elfutils odpovida cislu za lomitkem ve vystupu prikazu 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, ze systemtap byl sestaven s elfutls verze 0.156. ladici informace jadra Pro skripty, ktere analyzuji linuxove jadro, muze systemtap potrebovat prislusny soubor vmlinux vznikly pri sestavovani jadra. Poznamenejme, ze zde nejde o zkomprimovany soubor vmlinuz , na ktery se odkazuje boot loader, a ze ktereho byly ladici informace odstraneny. Soubor vmlinux je znacne vetsi, nez vmlinuz. Pokud sestavujete jadro rucne, ujistete se, ze mate zapnutou volbu CONFIG_DEBUG_INFO=y. Navic nektere linuxove distribuce mohou poskytovat vice variant jadra a pro kazdou variantu samostatny balicek s ladicimi informacemi. Prikladem takove varianty je kernel-debug, varianta s matoucim nazvem, ktera ma vlastni kernel-debug-debuginfo balicek (coz neni totez jako kernel-debuginfo obsahujici ladici informace pro balicek kernel). Program stap-prep muze pomoci s instalaci spravnych balicku. ladici informace pro uzivatelske procesy Pro SystemTap skripty, ktere analyzuji uzivatelske procesy, muze systemtap potrebovat prislusne ladici informace take. Pokud analyzujete rucne sestaveny program, pouzijte pro jeho preklad CFLAGS=-g -O2 . minidebuginfo Na nekterych systemech mohou binarni soubory obsahovat podmnozinu obvyklych ladicich informaci pro sledovani funkci a generovani vypisu 'backtrace'. Tohle tzv. 'MiniDebugInfo' predstavuje xz zkomprimovanou ELF sekci .gnu_debugdata. MiniDebugInfo je podporovano elfutils 0.156, nebo novejsi verze. komprimovane debuginfo Na nekterych systemech mohou byt ladici informace dostupne v komprimovane forme v ramci sekci .zdebug_*. Elfutils 0.153 a novejsi verze obsahuji podporu podporu pro tyto komprimovane ladici informace. nepotrebne ladici informace V nekterych pripadech lze skript upravit tak, aby ladici informace nepotreboval. Napriklad skript, ktery pouziva probe syscall.* lze obvykle prepsat na skript zalozeny na probe nd_syscall.*, non-DWARF sondach, ktere pouzivaji slozitejsi (ale take krehci) mechanizmus pro pristup k argumentum systemovych volani. Dalsi moznosti je pouziti zakompilovanych znacek typu 'tracepoint', ktere jsou dostupne v linuxovem jadre, nebo vyuzit znacky pro uzivatelske procesy. Ty nejsou zalozeny na ladicich informacich. Pokud jsou ladici informace potrebne k vyhodnoceni slozitejsich vyrazu typu $var->foo->bar melo by byt mozne pouzit zapis @cast(var,"foo","foo.h")->foo->bar cimz dojde k synteze ladicich informaci z hlavickovych souboru. AUTOMATIZACE Na nekterych platformach muze systemtap doporucit, ktere prikazy spustit pro stazeni ladicich informaci. Take je mozne pouzit prepinac --download-debuginfo flag. Program stap-prep muze byt schopen potrebne balicky stahnout a nainstalovat. Dalsi moznosti je pouzit stap-server pro kompilaci na vzdalenem stroji, kde mohou byt ladici informace centralizovany. V tomto pripade pouzijte volbu stap --use-server. VIZ TEZ 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 WARNING::DEBUGINFO(7stap)