原文:https://sourceware.org/systemtap/tutorial/1_Introduction.html
SystemTAP是一种允许开发人员和管理员编写和重用简单脚本来深入研究动态 Linux的活动。它可以快速、安全地提取、过滤和汇总数据,以便诊断复杂的性能或功能问题。
注意:本教程并不描述SystemTap中的所有可用功能。有关最新信息,请参阅各个STAP手册页。您可以在系统上或http://sourceware.org/systemtap/man/上安装这些软件。
SystemTap脚本设计的基本思想是 命名事件,并为它们提供 处理程序。每当指定的事件发生时,Linux内核运行处理程序就好像它是一个快速子程序,然后恢复。有几种事件,例如进入或退出函数、计时器过期或整个SystemTap会话开始或停止。处理程序是一系列脚本语言语句,指定事件发生时要完成的工作。这项工作通常包括从事件上下文中提取数据,将它们存储到内部变量中,或者打印结果。
SystemTap通过将脚本转换为C来工作,运行系统的 C 编译器来创建内核模块。当加载模块时,它通过钩住内核来激活所有探测到的事件。然后,当任何处理器上发生事件时,编译的处理程序都会运行。最后,会话停止,挂钩断开,模块移除。整个过程由一个命令行程序stap驱动。
本文假设您已经安装了SystemTap及其必备的内核开发工具和调试数据,这样您就可以运行脚本,如图[*]中的简单脚本。在运行SystemTap之前,以root或更好的身份登录,以stapdev组成员或sudo授权用户的身份登录。