dtrace - Nástroj pro generování statických
sondážních bodů kompatibilní s Dtrace.
dtrace -s file [OPTIONS]
Příkaz dtrace převádí definici
sondážních bodů předanou ve
file.d
na odpovídající hlavičkový soubor, pokud je
použit přepínač
-h, nebo na
odpovídající objektový soubor, pokud je
použit přepínač
-G.
- -h
- generuje hlavičkový soubor pro systemtap.
- -G
- generuje objektový soubor pro systemtap.
- -o file
- určuje výstupní soubor. Při
volbě -G, je výchozí název
výstupního souboru file.o; při volbě
-h pak file.h.
- -C
- spusť nad vsstupním souborem cpp preprocesor,
pokud je dán přepínač -h.
- -I file
- použij danou "include" cestu, pokud je
dán přepínač -C .
- -k
- Zachovej dočasné soubory,
například C zdrojový kód v
případě, že je dán
přepínač -G.
Systemptap je kompatibilní se specifikací statických dtrace
sond na úrovni zdrojového kódu. Mějme soubor
test.d s následujícím obsahem:
provider sdt_probes
{
probe test_0 (int type);
probe test_1 (struct astruct node);
};
struct astruct {int a; int b;};
Pak příkaz
"dtrace -s test.d -G" vygeneruje
objektový soubor s definicí sondážních
bodů
test.o a příkaz
"dtrace -s test.d -h"
vytvoří hlavičkový soubor
test.h.
Následně může aplikace využívat
vygenerovaná makra takto:
#include "test.h"
...
struct astruct s;
...
SDT_PROBES_TEST_0(value);
...
if (SDT_PROBES_TEST_1_ENABLED())
SDT_PROBES_TEST_1(expensive_function(s));
Semafory jsou logické proměnné, které systemtap
využívá k přeskočení
nákladné inicializace sondy (příprava
argumentů) v případech, kdy je to možné.
Systemtap hodnotu semaforů nastavuje automaticky, když
příslušný skript běží.
Semafory jsou definovány v rámci objektového souboru
"test.o", který tudíž musí
být slinkován s aplikací.
V některých případech ovšem nejsou semafory
nutné ani užitečné. V tom
případě lze vynecháním
"test.o" zjednodušit sestavování
aplikace. K přeskočení závislostí na
semaforech vložte include
"<sys/sdt.h>" do
aplikace před
"test.h" takto:
#include <sys/sdt.h>
#include "test.h"
...
struct astruct s;
...
SDT_PROBES_TEST_0(value);
...
if (SDT_PROBES_TEST_1_ENABLED())
SDT_PROBES_TEST_1(cheap_function(s));
V tomto případě se nejdříve upraví
ENABLED() test.
stap(1),
stappaths(7)
Použijte projektovou bugzillu, nebo mailing list.
http://sourceware.org/systemtap/,
<[email protected]>.
error::reporting(7stap),
https://sourceware.org/systemtap/wiki/HowToReportBugs