stap探测程序的执行流程
2018-10-16 本文已影响0人
pandazhong
用stap来查看程序的执行流程:
代码编写如下:
#include <stdio.h>
int testA()
{
int a = 10;
return a;
}
int testB()
{
return 5+testA();
}
int main()
{
int a = testB();
printf("a=%d\n", a);
return 0;
}
编写查看程序执行流程的stp文件:
probe process("./func").function("*").call {
printf("%s -> %s\n", thread_indent(4),ppfunc())
}
probe process("./func").function("*").return {
printf("%s <- %s\n", thread_indent(-4), ppfunc())
}
其中thread_indent(4)是用来控制缩进,ppfunc()是用来获取当前函数名称,注意,ppfunc()如果获取的是C++的函数名,则函数名会被截断,如果要获取完整函数名称,则要调用probefunc()函数。
执行程序: stap -c ./func traceback.stp
输入如下: