DOKK / manpages / debian 11 / systemtap-doc / error::pass2.7stap.cs
ERROR::PASS2(7stap) ERROR::PASS2(7stap)

error::pass2 - chyby procesní fáze 2

Chyby, které se mohou vyskytnout během procesní fáze 2 mají řadu příčin. Mezi ty nejobvyklejší patří:

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).

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".

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.

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.

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.

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.

Upovídanost procesní fáze 2 lze zvýšit pomocí --vp 02.

stap(1),
stap-prep(1),
stapprobes(3stap),
probe::*(3stap),
error::dwarf(7stap),
error::inode-uprobes(7stap),
warning::debuginfo(7stap),
error::reporting(7stap)