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

输入如下:

上一篇下一篇

猜你喜欢

热点阅读