stap探测变量的值

    首先我们写一个简单的程序:

#include

int main()

{

        int a = 10;

        char *b = "hello,world";

        printf("a=%d  b=%s\n", a, b);

        return 0;

}

编译的时候加上-g参数:g++ -g -o panda panda.cpp

查看程序中都有哪些函数: stap -l 'process("./panda").function("*")'

输出如下:

stap探测变量的值_第1张图片

    接下来我们探测程序中a和b的值:

probe process("./panda").statement("main@/intellif_home/zhongpp/panda.cpp:7") {

        printf("%s  a=%d,b=%s\n",execname(),$a,$b$)

}

在这里,我们在panda.cpp的第七行下了个探针,用来打印a和b的值,注意,当打印值本身的时候,变量前面加上$(比如$a是访问变量a),如果打印指针中的内容,则变量前后都加上$(比如$b$是打印b指针指向的内容)。

输出如下:

    备注:stap -c ./panda panda.stp命令中的-c表明要执行的程序。

    prefect!!!

你可能感兴趣的:(stap探测变量的值)