table of contents
ERROR::PASS2(7stap) | ERROR::PASS2(7stap) |
JMÉNO¶
error::pass2 - chyby procesní fáze 2
POPIS¶
Chyby, které se mohou vyskytnout během procesní fáze 2 mají řadu příčin. Mezi ty nejobvyklejší patří:
- chybějící ladicí informace
- Skript potřebuje ladicí informace pro lokalizaci sondážního bodu, ale ladicí informace nejsou doustupné. Více podrobností naleznete v manuálových stránkách error::dwarf(7stap) a warning::debuginfo(7stap).
- nedostupná třída sondážních bodů
- Některé sondážní body jsou specifické pro verzi, architekturu, nebo konfiguraci. Například sondy pro uživatelské procesy process.* mohou vyžadovat jadernou funkcionalitu "utrace", nebo "uprobes".
- nedostupné sondážní body
- Některé sondážní body mohou být nedostupné i když jejich třída dostupná je. Například kprobe.function("foobar") může selhat pokud funkce foobar byla z jádra odstraněna. Pro některé symboly mohou chybět ladicí informace. Tím obvykle trpí sondážní body .function nebo .statement . Přesvědčte se o dostupnosti ladicích informací. Vyzkoušejte program stap-prep který umí nainstalovat chybějící závislosti. Použijte zástupný symbol jako např. stap -l 'kprobe.function("*foo*")' abyste zjistili dostupné varianty sondážního bodu. Použijte modifikátory ! nebo ? pro vyznačení volitelnosti, či dostatečnosti daného sondážního bodu, aby funkční části skriptu mohly pokračovat v činnosti.
- překlepy
- V specifikaci sondážních bodů mohou být překlepy, jako např. ("sycsall" vs. "syscall"). Zástupné symboly nemusejí být expandovatelné ani na jeden validní sondážní bod. Ověřte platnost/existenci sondážních bodů pomocí stap -l FILTR. Další běžnou chybou je použití chybného operátoru dereference: . namísto správného ->. Příklad správného použití je $foo->bar->baz ačkoliv v C by správný zápis byl foo->bar.baz.
- nedostupné kontextové proměnné
- Systemtap skripty se často pokoušejí přistoupit ke kontextovým proměnným v analyzovaném kódu prostřednictvím syntaxe $variable . Dostupnost takových proměnných může záviset na verzi kompilátoru, zvolené optimalizaci, architektuře atd. Použijte stap -L FILTR k vypsání dostupných kontextových proměnných pro danou sondu. Použijte @defined() pro ověření dostupnosti proměnné v rámci skriptu. Zvažte použití volby stap --skip-badvars čímž se nedostupné kontextové proměnné tiše přeskočí, a jejich hodnota se automaticky nastaví na 0. Experimentujte s volbou --prologue-searching.
- nekonzistentní cache
- Občas může cache systemtap modulu ($HOME/.systemtap/cache) obsahovat zastaralé informace. Pomocí přepínače stap --poison-cache ... lze obsah cache zneplatnit. Poznámka: Toto by se nemělo stát, jde o chybu. Prosím, nahlaste ji.
VÍCE INFORMACͶ
Upovídanost procesní fáze 2 lze zvýšit pomocí --vp 02.
VIZ TÉŽ¶
stap(1), stap-prep(1), stapprobes(3stap), probe::*(3stap), error::dwarf(7stap), error::inode-uprobes(7stap), warning::debuginfo(7stap), error::reporting(7stap)