如何编写stap(systemtap)来查看某个进程是否调用了特定的内核函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写stap(systemtap)来查看某个进程是否调用了特定的内核函数?相关的知识,希望对你有一定的参考价值。
使用stap,我可以写* .stp文件
跟踪流程的操作,如:
probe process("mytest").begin
{
printf("Caught mytest process")
}
或者跟踪任何进程是否调用了内核函数:
probe kernel.function("do_exit").call #all processes
{
printf("called kernel/exit.c: do_exit\n")
}
但我的要求是:跟踪来自特定进程名称的内核函数调用,例如跟踪“mytest”进程调用的“sys_open”。
如何写这个.stp语句/函数?谢谢!
答案
我找到了一种方法:使用一个指示程序名称的变量
global prog_name = "mytest";
probe kernel.function("do_exit").call
{
if(execname() == progname){
printf("called kernel/exit.c: do_exit\n");
}
}
以上是关于如何编写stap(systemtap)来查看某个进程是否调用了特定的内核函数?的主要内容,如果未能解决你的问题,请参考以下文章