stapref
Referenční příručka pro skriptovací jazyk systemtapu.
• break • continue • delete • else • exit • foreach • for • function • global • private • if • in • next • probe • return • try/catch • while
Datové typy a operátory
Celá čísla • var1 = 5 • global var2 = 10 Řetězce • var1 = "string1" • global var2 = "string2" Asociativní pole • global array1[] • global array2[SIZE] • array[index] = 5 Kontextové proměnné • $var • $var$ ("pěkný výpis" řetězce) Binární číselné operátory • * / % + - << >> & ^ | && || Binární řetězcové operátory • . (spojení řetězců) Operátory pro číselné přiřazení • = += -= *= /= %= >>= <<= &= ^= |= Přiřazovací operátory pro řetězce • = .= Unární číselné operátory • + - ! ~ ++ -- Operátory pro porovnávání čísel a řetězců • < > <= >= == != Operátory pro srovnání proti regulárnímu výrazu • =~ !~ Ternární operátor • cond ? exp1 : exp2 Seskupovací operátor • ( expression ) Operátory nad poli • array[index] (array read/write) • [index] in array Agregační operátor. • var <<< value
Příkazy
Skok • continue • break • next • return expression • try přikaz catch (zpráva)
Příkazy větvení • if (výraz) příkaz • else příkaz
Příkazy pro iterování • foreach (proměnná in pole) příkaz • foreach ([var1,var2,...] in pole) příkaz • for (výraz; výraz; výraz) příkaz • while (výraz) příkaz
Deklarace • function jméno (proměnná : type, ...) { příkaz } • function jméno : type (proměnná : type, ...) { příkaz } • function jméno : type (proměnná : type, ...) %{ c_příkaz %} • probe sondážní_bod { příkaz } • probe label = sondážní_bod { příkaz }
Lexikální struktury
Komentáře • # ... komentář • // ... komentář • /* ... komentář ... */
Značky pro preprocesor • %( výraz %? true_tokens %: false_tokens %) • @define značka (proměnná, ...) %{ příkaz %}
Vestavěné funkce
Vestavěné agregační funkce • @avg (proměnná) • @count (proměnná) • @hist_linear (proměnná, N, N, N) • @hist_log (proměnná) • @max (proměnná) • @min (proměnná) • @sum (proměnná)
Vestavěné funkce pro výstup • print (proměnná) • printf (formát:řetězec, proměnná, ...) kde formát má tvar: %[flags][šířka][.přesnost][délka]specifiáktor • printd (oddělovač:řetězec, proměnná, ...) • printdln (oddělovač:řetězec, proměnná, ...) • println () • sprint:řetězec (proměnná) • sprintf:řetězec (formát:řetězec, proměnná, ...)
Vestavěné funkce pro přístup k proměnným • @cast (variable, "type_name"[, "module"]) • @defined (variable)
Sondážní body
Některé běžné sondážní body • kernel.function(PATTERN) kernel.function(PATTERN).call • kernel.function(PATTERN).return • kernel.FUNCTION (PATTERN).return.maxactive(VALUE) • kernel.FUNCTION (PATTERN).inline • kernel.FUNCTION (PATTERN).label(LPATTERN) • module(MPATTERN).FUNCTION (PATTERN) • module(MPATTERN).FUNCTION (PATTERN).call • module(MPATTERN).FUNCTION (PATTERN).return.maxactive(VALUE) • module(MPATTERN).FUNCTION (PATTERN).inline • kernel.statement(PATTERN) • kernel.statement(ADDRESS).absolute • module(MPATTERN).statement(PATTERN) • kprobe.FUNCTION (FUNCTION) • kprobe.FUNCTION (FUNCTION).return • kprobe.module(NAME).FUNCTION (FUNCTION) • kprobe.module(NAME).FUNCTION (FUNCTION).return • kprobe.statement(ADDRESS).absolute • process.begin process("PATH").begin • process(PID).begin process.thread.begin • process("PATH").thread.begin • process(PID).thread.begin • process.end • process("PATH").end • process(PID).end • process.thread.end • process("PATH").thread.end • process(PID).thread.end • process("PATH").syscall • process(PID).syscall • process.syscall.return • process("PATH").syscall.return • process(PID).syscall.return • process("PATH").FUNCTION ("NAME") • process("PATH").statement("*@FILE.c:123") • process("PATH").FUNCTION ("*").return • process("PATH").FUNCTION ("myfun").label("foo") • process("PATH").mark("LABEL") • java("PNAME").class("CLASSNAME").method("PATTERN") • java("PNAME").class("CLASSNAME").method("PATTERN").return • java(PID).class("CLASSNAME").method("PATTERN") • java(PID).class("CLASSNAME").method("PATTERN").return • python2.module("MODULENAME").function("PATTERN") • python2.module("MODULENAME").function("PATTERN").return • python3.module("MODULENAME").function("PATTERN") • python3.module("MODULENAME").function("PATTERN").return
Funkce standardního tapsetu
Některé běžnější funkce standardního tapsetu • addr:long () • backtrace:string () • caller:string () • caller_addr:long () • cmdline_arg:string (N:long) • cmdline_args:string (N:long,m:long,delim:string) • cmdline_str:string () • env_var:string (name:string) • execname:string () • int_arg:long (N:long) • isinstr:long(s1:string,s2:string) • long_arg:long (N:long) • modname:string () • module_name:string () • pid:long () • pn:string () • pointer_arg:string (N:long) • pp:string () • print_backtrace () • probefunc:string () • register:long(name:string) • str_replace:string(prnt_str:string,srch_str:string,rplc_str:string) • stringat:long(str:string,pos:long) • strlen:long(str:string) • strtol:long(str:string,base:long) • substr:string(str:string,start:long,length:long) • user_long:long(addr:long) • user_string:string(addr:long)
stap(1)
error::reporting(7stap), https://sourceware.org/systemtap/wiki/HowToReportBugs