计算机 · 2021年12月14日 0

Systemtap

在Gregg介绍Linux Tracer的文章中,一共介绍了9种工具,个人打算认真学习掌握其中的四种:

  • ftrace
  • perf_events
  • eBPF
  • SystemTap

SystemTap被Gregg称为其中最强大的工具,那么就先从SystemTap开始入手吧!

安装与使用

我是18.04的ubuntu系统,照着ubuntu的SystemTap包的介绍页面安装的。

sudo apt install systemtap

记得安装机器内核的debug symbols:

sudo apt-get install linux-image-$(uname -r)-dbgsym

因为我是之前有安装过debug symbols的包,所以就略过增加相应源的步骤。如果机器没有添加过这个下载内核debug symbols的源的话,按照这个页面指示操作就好了。

安装好后,可以执行stap --help检查是否安装成功。debug symbols也安装好后,就可以跑一个脚本检测下是否能正常工作:

#! /usr/bin/env stap

probe kernel.function("*@net/socket.c").call {
  printf ("%s -> %s\n", thread_indent(1), probefunc())
}
probe kernel.function("*@net/socket.c").return {
  printf ("%s <- %s\n", thread_indent(-1), probefunc())
}

记得执行时要有root权限。

脚本语言