首先我们写一个简单的程序:
#include<stdio.h>
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("*")'
输出如下:
接下来我们探测程序中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!!!
网友评论