Hi gurus,
could you please explain few questions about systemtap.
1st
seems gettimeofday_s() always returns 0
stap -ve 'probe timer.s(4){ printf("%d ", gettimeofday_s()) }'
returns 0 0 0 ... also gettimeofday_ms gettimeofday_ns
When I am trying to investigate what is going on issuing second commnat paraller to first one
stap -ve 'probe kernel.function("*gettimeofday*") { printf("%d\t%s\n",pid(),execname()); }'
it returns various PID and execs but neither belongs to stap
3rd command also issued paraller to 1st
stap -ve 'probe kprobe.function("*gettimeofday*") { printf("%d\t%s\n",pid(),execname()); }''
seems it goes throught 5 phases (compiles and loaded into kernel) - but prints nothing just: WARNING: probe registration error (symbol not found)
the date command runs normally
[root@fedora ~]# date
Sat Mar 26 10:30:10 CET 2011
What is wrong with gettimeofday ???
2nd
I am trying to trace system calls per process with following code
stap -ve 'probe syscall.open {if (execname()=="ping") { printf("execname(): %s, pid(): %d, argstr: %s, filename: %s, name: %s\n", execname(), pid(), argstr, filename, name) } }'
can be process tracd according to execname() + PATH containing binary - the equivalent of /proc/$PID/exe
3rd
according man stap the -L option should be the used to get possible variables.
[root@fedora ~]# stap -L 'syscall.open'
syscall.open name:string filename:string flags:long mode:long argstr:string $filename:char const* $flags:int $mode:int $ret:long int
works as expected
Now, how to know which variables can be used in all library calls ?
stap -vL 'kernel.function("*")' > kernel.functions
did not returns anything why
Also can somebody explain those variables with $ (target variables) They are those which can be used in source code of app ?
4nd
where are described functions that can be used with stap ? Those in man stapfuncs ?
and tapsets are those in tapset refference ?
Many thanks all