SystemTap 基于 Kprobes( Kprobe、Kretprobe)。
SystemTap的执行流程:
1.首先通过 stap程序 将stap脚本转换成c代码,进一步转换成提供探针行为的内核模块;
2.通过SystemTap:staprun
、stapio将模块安装到内核中并将输出发送到stdout。
SystemTap 运行基于内核符号表,可以提供能基于符号表的检测调用、查询变量、修改动作。
SystemTap 脚本由探针和在触发探针时需要执行的代码块组成。
最后,SystemTap提供许多内部函数,这些函数提供关于当前上下文的额外信息。例如,您可
以使用caller()
识别当前的调用函数,使用cpu()
识别当前的处理器号码,以及使用pid()
返回 PID。SystemTap还提供许多其他函数,提供对调用堆栈和当前注册表的访问。
Systemtap学习笔记
https://blog.csdn.net/panfengyun12345/article/details/16858429