第 7 章 编译程序及工具
SystemTap
SystemTap 是一个跟踪和探测工具,它可允许用户非常详细地了解并监控操作系统(特别是内核)的活动。它提供的信息类似 netstat、ps、top 和 iostat 等工具的输出结果。但是 SystemTap 的设计是用来为收集的信息提供更多过滤和分析选项。
已将红帽企业版 Linux 5.9 中的 SystemTap 更新至版本 1.8,并提供以下功能和改进:
- SystemTap 运行时(staprun)现在接受
-T
超时选项,允许脚本中的低流量输出使用较小唤醒频率进行轮询。 - 现在被 SystemTap 调用后,会清除
kbuild
$PATH
环境。 printf
格式现在可以使用%#c
控制参数避开非打印字符。- 美化打印字节字段现在使用整数,字符现在使用 escape 格式输出。
- SystemTap 编译服务器和客户端现在支持 IPv6 网络。
- SystemTap 模块现在更小,编译更迅速。现在默认取消模块的 debuginfo。
@var
语法现在是访问uprobe
和kprobe
句柄中 DWARF 变量(进程、内核、模块)的可替换语言语法。- SystemTap 脚本转换器驱动程序(
stap
)现在提供以下资源限制选项:--rlimit-as=NUM --rlimit-cpu=NUM --rlimit-nproc=NUM --rlimit-stack=NUM --rlimit-fsize=NUM
- SystemTap 编译服务器现在同时支持多个连接。
- 在 1.8 发行本中弃用以下 tapset 功能,并将在 1.9 发行本中删除它们:
daddr_to_string()
- SystemTap 现在破坏本地变量以避免 tapset 所包含 C 标头之间的冲突。
- 在内嵌的 C 功能中,应使用新定义的宏
STAP_ARG_*
而不是THIS->*
符号。