.\" -*- nroff -*- .TH STAPREF 1 .SH JMÉNO stapref \- referenční příručka pro skriptovací jazyk systemtapu .\" macros .\" do not nest SAMPLEs .de SAMPLE .br .nr oldin \\n(.i .RS .nf .nh .. .de ESAMPLE .hy .fi .RE .in \\n[oldin]u .. .SH POUŽiTÍ .br .B stapref .SH POPIS Referenční příručka pro skriptovací jazyk systemtapu. .SH JAZYK Klíčová slova .SAMPLE \[bu] \fBbreak\fR \[bu] \fBcontinue\fR \[bu] \fBdelete\fR \[bu] \fBelse\fR \[bu] \fBexit\fR \[bu] \fBforeach\fR \[bu] \fBfor\fR \[bu] \fBfunction\fR \[bu] \fBglobal\fR \[bu] \fBprivate\fR \[bu] \fBif\fR \[bu] \fBin\fR \[bu] \fBnext\fR \[bu] \fBprobe\fR \[bu] \fBreturn\fR \[bu] \fBtry/catch\fR \[bu] \fBwhile\fR .ESAMPLE Datové typy a operátory .SAMPLE Celá čísla \[bu] var1 = 5 \[bu] \fBglobal\fR var2 = 10 Řetězce \[bu] var1 = "string1" \[bu] \fBglobal\fR var2 = "string2" Asociativní pole \[bu] \fBglobal\fR array1[] \[bu] \fBglobal\fR array2[SIZE] \[bu] array[index] = 5 Kontextové proměnné \[bu] \fB$\fRvar \[bu] \fB$\fRvar\fB$\fR ("pěkný výpis" řetězce) Binární číselné operátory \[bu] \fB* / % + \- << >> & ^ | && ||\fR Binární řetězcové operátory \[bu] \fB.\fR (spojení řetězců) Operátory pro číselné přiřazení \[bu] \fB= += -= *= /= %= >>= <<= &= ^= |= \fR Přiřazovací operátory pro řetězce \[bu] \fB= .= \fR Unární číselné operátory \[bu] \fB+ \- ! ~ ++ \-\- \fR Operátory pro porovnávání čísel a řetězců \[bu] \fB< > <= >= == != \fR Operátory pro srovnání proti regulárnímu výrazu \[bu] \fB=~ !~ \fR Ternární operátor \[bu] cond \fB?\fR exp1 \fB:\fR exp2 Seskupovací operátor \[bu] \fB(\fR expression \fB)\fR Operátory nad poli \[bu] array\fB[\fRindex\fB]\fR (array read/write) \[bu] [index] \fB\in\fR array Agregační operátor. \[bu] var \fB<<<\fR value .ESAMPLE Příkazy .SAMPLE Skok \[bu] \fBcontinue\fR \[bu] \fBbreak\fR \[bu] \fBnext\fR \[bu] \fBreturn\fR expression \[bu] \fBtry\fR přikaz \fBcatch\fR (zpráva) .ESAMPLE .SAMPLE Příkazy větvení \[bu] \fBif\fR (výraz) příkaz \[bu] \fBelse\fR příkaz .ESAMPLE .SAMPLE Příkazy pro iterování \[bu] \fBforeach\fR (proměnná \fBin\fR pole) příkaz \[bu] \fBforeach\fR ([var1,var2,...] \fBin\fR pole) příkaz \[bu] \fBfor\fR (výraz; výraz; výraz) příkaz \[bu] \fBwhile\fR (výraz) příkaz .ESAMPLE .SAMPLE Deklarace \[bu] \fBfunction\fR jméno (proměnná : type, ...) { příkaz } \[bu] \fBfunction\fR jméno : type (proměnná : type, ...) { příkaz } \[bu] \fBfunction\fR jméno : type (proměnná : type, ...) %{ c_příkaz %} \[bu] \fBprobe\fR sondážní_bod { příkaz } \[bu] \fBprobe\fR label = sondážní_bod { příkaz } .ESAMPLE Lexikální struktury .SAMPLE Komentáře \[bu] \fB#\fR ... komentář \[bu] \fB//\fR ... komentář \[bu] \fB/*\fR ... komentář ... \fB*/\fR .ESAMPLE .SAMPLE Značky pro preprocesor \[bu] \fB%(\fR výraz \fB%?\fR true_tokens \fB%:\fR false_tokens \fB%)\fR \[bu] \fB@define\fR značka (proměnná, ...) %{ příkaz %} .ESAMPLE Vestavěné funkce .SAMPLE Vestavěné agregační funkce \[bu] \fB@avg\fR (proměnná) \[bu] \fB@count\fR (proměnná) \[bu] \fB@hist_linear\fR (proměnná, N, N, N) \[bu] \fB@hist_log\fR (proměnná) \[bu] \fB@max\fR (proměnná) \[bu] \fB@min\fR (proměnná) \[bu] \fB@sum\fR (proměnná) .ESAMPLE .SAMPLE Vestavěné funkce pro výstup \[bu] \fBprint\fR (proměnná) \[bu] \fBprintf\fR (formát:řetězec, proměnná, ...) \ kde formát má tvar: %[flags][šířka][.přesnost][délka]specifiáktor \[bu] \fBprintd\fR (oddělovač:řetězec, proměnná, ...) \[bu] \fBprintdln\fR (oddělovač:řetězec, proměnná, ...) \[bu] \fBprintln\fR () \[bu] \fBsprint\fR:řetězec (proměnná) \[bu] \fBsprintf\fR:řetězec (formát:řetězec, proměnná, ...) .ESAMPLE .SAMPLE Vestavěné funkce pro přístup k proměnným \[bu] \fB@cast\fR (variable, "type_name"[, "module"]) \[bu] \fB@defined\fR (variable) .ESAMPLE Sondážní body .SAMPLE Některé běžné sondážní body \[bu] kernel.function(PATTERN) kernel.function(PATTERN).call \[bu] kernel.function(PATTERN).return \[bu] kernel.FUNCTION (PATTERN).return.maxactive(VALUE) \[bu] kernel.FUNCTION (PATTERN).inline \[bu] kernel.FUNCTION (PATTERN).label(LPATTERN) \[bu] module(MPATTERN).FUNCTION (PATTERN) \[bu] module(MPATTERN).FUNCTION (PATTERN).call \[bu] module(MPATTERN).FUNCTION (PATTERN).return.maxactive(VALUE) \[bu] module(MPATTERN).FUNCTION (PATTERN).inline \[bu] kernel.statement(PATTERN) \[bu] kernel.statement(ADDRESS).absolute \[bu] module(MPATTERN).statement(PATTERN) \[bu] kprobe.FUNCTION (FUNCTION) \[bu] kprobe.FUNCTION (FUNCTION).return \[bu] kprobe.module(NAME).FUNCTION (FUNCTION) \[bu] kprobe.module(NAME).FUNCTION (FUNCTION).return \[bu] kprobe.statement(ADDRESS).absolute \[bu] process.begin process("PATH").begin \[bu] process(PID).begin process.thread.begin \[bu] process("PATH").thread.begin \[bu] process(PID).thread.begin \[bu] process.end \[bu] process("PATH").end \[bu] process(PID).end \[bu] process.thread.end \[bu] process("PATH").thread.end \[bu] process(PID).thread.end \[bu] process("PATH").syscall \[bu] process(PID).syscall \[bu] process.syscall.return \[bu] process("PATH").syscall.return \[bu] process(PID).syscall.return \[bu] process("PATH").FUNCTION ("NAME") \[bu] process("PATH").statement("*@FILE.c:123") \[bu] process("PATH").FUNCTION ("*").return \[bu] process("PATH").FUNCTION ("myfun").label("foo") \[bu] process("PATH").mark("LABEL") \[bu] java("PNAME").class("CLASSNAME").method("PATTERN") \[bu] java("PNAME").class("CLASSNAME").method("PATTERN").return \[bu] java(PID).class("CLASSNAME").method("PATTERN") \[bu] java(PID).class("CLASSNAME").method("PATTERN").return \[bu] python2.module("MODULENAME").function("PATTERN") \[bu] python2.module("MODULENAME").function("PATTERN").return \[bu] python3.module("MODULENAME").function("PATTERN") \[bu] python3.module("MODULENAME").function("PATTERN").return .ESAMPLE Funkce standardního tapsetu .SAMPLE Některé běžnější funkce standardního tapsetu \[bu] addr:long () \[bu] backtrace:string () \[bu] caller:string () \[bu] caller_addr:long () \[bu] cmdline_arg:string (N:long) \[bu] cmdline_args:string (N:long,m:long,delim:string) \[bu] cmdline_str:string () \[bu] env_var:string (name:string) \[bu] execname:string () \[bu] int_arg:long (N:long) \[bu] isinstr:long(s1:string,s2:string) \[bu] long_arg:long (N:long) \[bu] modname:string () \[bu] module_name:string () \[bu] pid:long () \[bu] pn:string () \[bu] pointer_arg:string (N:long) \[bu] pp:string () \[bu] print_backtrace () \[bu] probefunc:string () \[bu] register:long(name:string) \[bu] str_replace:string(prnt_str:string,srch_str:string,rplc_str:string) \[bu] stringat:long(str:string,pos:long) \[bu] strlen:long(str:string) \[bu] strtol:long(str:string,base:long) \[bu] substr:string(str:string,start:long,length:long) \[bu] user_long:long(addr:long) \[bu] user_string:string(addr:long) .ESAMPLE .SH VIZ TÉŽ .nh .nf .IR stap (1) .SH CHYBY Použijte projektovou bugzillu, nebo mailing list. .nh .BR http://sourceware.org/systemtap/ ", " . .hy .PP .IR error::reporting (7stap), .BR https://sourceware.org/systemtap/wiki/HowToReportBugs .hy