This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
How to use tokenize
- From: domenico dot dileo at unina dot it
- To: "systemtap at sourceware dot org" <systemtap at sourceware dot org>
- Date: Fri, 05 Oct 2012 19:27:36 +0200
- Subject: How to use tokenize
Hello,
I want to split the string returned by backtrace with tokenize.
Thus, I wrote the following code
function print_stacktrace(subsystem, when){
#stacktrace is invoked either function
# (probe) is called or when it is returning
# when can assume 2 values:
# c, call (stacktrace when function is called)
# r, return (stacktrace when function returns)
trace = backtrace()
printf("%s \n", probefunc())
while(strlen(address = tokenize(trace," ")) != 0){
printf("%s \n", address)
}
}
probe kernel.function("*@mm/*.c").call{
print_stacktrace("MM", "c")
}
probe kernel.function("*@mm/*.c").return{
print_stacktrace("MM", "r")
}
The output is something like
dnotify
0xc011698
0xc011698
0xc011698
...
0xc011698
It seems that the script gets stuck in the while loop.
in other words, at the first iterations tokenize returns
0xc011698 this value is assigned to address.
To the second iteration tokenize doesn't return a value
and address is still equal to the previous value.
I know that in stap there are function like "print_stack",
I don't need them because I have to submit the stack
trace to other elaborations.
Domenico Di Leo, PhD student, Universit? degli Studi di Napoli Federico II
Ph: +39 081 676770
Fax: +39 081 676574
Web: http://wpage.unina.it/domenico.dileo