DTRACE(1) General Commands Manual DTRACE(1)

# [JMÉNO](#JM)

dtrace - Nástroj pro generování statických sondážních bodů kompatibilní s Dtrace.

# [POUŽITÍ](#POU)

**dtrace -s *file* \[OPTIONS]**

# [POPIS](#POPIS)

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

# [VOLBY](#VOLBY)

[**-h**](#h)

generuje hlavičkový soubor pro systemtap.

[**-G**](#G)

generuje objektový soubor pro systemtap.

[**-o *file***](#o)

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**](#C)

spusť nad vsstupním souborem cpp preprocesor, pokud je dán přepínač **-h**.

[**-I *file***](#I)

použij danou "include" cestu, pokud je dán přepínač **-C** .

[**-k**](#k)

Zachovej dočasné soubory, například C zdrojový kód v případě, že je dán přepínač **-G**.

# [PŘÍKLADY](#P)

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](#SEMAFORY)

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 *"&lt;sys/sdt.h&gt;"* 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.

# [VIZ TAKÉ](#VIZ_TAK)

```
stap(1),
stappaths(7)
```

# [CHYBY](#CHYBY)

Použijte projektovou bugzillu, nebo mailing list. **http://sourceware.org/systemtap/**, **&lt;systemtap@sourceware.org&gt;**.

[*error::reporting*(7stap)](/man/enterprise-packages/systemtap/error::reporting.7stap), **https://sourceware.org/systemtap/wiki/HowToReportBugs**

---

Document: dtrace(1) from systemtap 5.6-r0 (Chainguard OS)
Source: https://sourceware.org/git/systemtap.git
